Как зациклить мою программу? То есть, если пользователь хочет повторить программу и ввести другую строку

Программа заключается в том, чтобы в строчке поменять слова. Но при попытке сделать зацикливание, при втором прогоне чаровский массив stroka становится "\n" тем самым просто не давая заполнить его.

#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <Windows.h>
#include <ctype.h>
char* zam(char zamena[20], int len)
{
    for (int i = 0; i < len + 1; i++)
    {
        zamena[len - i] = zamena[len - 1 - i];
    }
    zamena[0] = '(';
    zamena[len + 1] = ')';
    zamena[len + 2] = 0;
    return zamena;
}
char* reg(char mas[255], int len)
{
    setlocale(LC_ALL, "");
    for (int i = 0; i < len + 1; i++)
    {
        mas[i]=tolower(mas[i]);
    }
    return mas;
}
char* arr(char mas[255][10],char slovo[20],char zamena[20], int word_count)
{
    int len;
    int len1 = strlen(zamena);
    char name[255][10];
    for (int i = 0; i < word_count; i++)
    {
        len = strlen(mas[i]);
        if (mas[i][len - 1] == '.')
        {
            mas[i][len - 1] = 0;
            len = strlen(mas[i]);
            strcpy(name[i], mas[i]);
            if (strcmp(reg(mas[i], len), slovo) == 0)
            {
                printf("(%s). ", name[i]);
                zamena[len1] = '.';
                zamena[len1 + 1] = 0;
                strcpy(mas[i], zamena);
            }
            else
            {
                name[i][len] = '.';
                name[i][len + 1] = 0;
                strcpy(mas[i], name[i]);
                printf("%s ", mas[i]);
            }
            zamena[len1] = 0;
        }
        else if (mas[i][len - 1] == ',')
        {
            mas[i][len - 1] = 0;
            len = strlen(mas[i]);
            strcpy(name[i], mas[i]);
            if (strcmp(reg(mas[i], len), slovo) == 0)
            {
                printf("(%s), ", name[i]);
                zamena[len1] = ',';
                zamena[len1 + 1] = 0;
                strcpy(mas[i], zamena);
            }
            else
            {
                name[i][len] = ',';
                name[i][len + 1] = 0;
                strcpy(mas[i], name[i]);
                printf("%s ", mas[i]);
            }
            zamena[len1] = 0;
        }
        else
        {
            len = strlen(mas[i]);
            strcpy(name[i], mas[i]);
            if (strcmp(reg(mas[i], len), slovo) == 0)
            {
                printf("(%s) ", name[i]);
                strcpy(mas[i], zamena);
            }
            else
            {
                strcpy(mas[i], name[i]);
                printf("%s ", mas[i]);
            }
        }
    }
    return *mas;
}
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char* tmp;
    char mas[255][10];
    char slovo[20];
    char zamena[20];
    char stroka[255];
    int q, len, word_count = 0;
    while (true)
    {
        printf("Введите строку:\n");
        fgets(stroka, 255, stdin);
        len = strlen(stroka);
        stroka[len - 1] = 0;
        printf("Введите слово, которое нужно заменить:\n");
        fgets(slovo, 20, stdin);
        len = strlen(slovo);
        slovo[len - 1] = 0;
        reg(slovo, len);
        printf("Введите слово на которое надо заменить:\n");
        fgets(zamena, 20, stdin);
        len = strlen(zamena);
        zamena[len - 1] = 0;
        len -= 1;
        zam(zamena, len);
        tmp = strtok(stroka, " ");
        for (int i = 0; tmp != NULL; i++)
        {
            strcpy(mas[i], tmp);
            tmp = strtok(NULL, " ");
            word_count++;
        }
        printf("Ваша строка:\n");
        arr(mas, slovo, zamena, word_count);
        printf("\nИзменённая строка:\n");
        for (int i = 0; i < word_count; i++)
        {
            printf("%s ", mas[i]);
        }
        word_count = 0;
        printf("\nЕсли хотите ввести повторить операцию и ввести другую строку введите 1, иначе введите 0\n");
        scanf("%d", &q);
        getchar();
        if (q==0)
            break;
    }
}

Ответы (2 шт):

Автор решения: Lem0nti

Вероятно, вам нужно что-то такое

while (true)
{
    printf("Введите строку:\n");

...

    for (int i = 0; i < word_count; i++)
        printf("%s ", mas[i]);
    //printf("\nЕсли хотите ввести другую строку введите 1 иначе 0\n");
    //if (0)
    //    break;
}
→ Ссылка
Автор решения: Alex8608

Оказалось что fgets считывал \n после scanf(). Нужно добавить после scanf() getchar() тем самым всё заработает.

→ Ссылка