Как переменной s типа char присвоить значения str?

Вообще нужно чтобы на входе программа получала какое то количество строк текста и обрабатывала каждую строчку по отдельности.

int main(void)
{
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    char str[1024];
    char* estr;

    //Чтение (построчно) данных из файла в бесконечном цикле
    while (1)
    {
        // Чтение одной строки  из файла
        estr = fgets(str, sizeof(str), stdin);

        //Проверка на конец файла или ошибку чтения
        if (estr == NULL)
        {
            // Проверяем, что именно произошло: кончился файл
            // или это ошибка чтения
            if (feof(stdin) != 0)
            {
                //Если файл закончился, выводим сообщение о завершении
                //чтения и выходим из бесконечного цикла
                break;
            }
        }

        STACK head = NULL;
        bool flag = true;
        char s, s_1;

        while ((s = str) != '\n')
        {
            if (s == '(' || s == '{' || s == '[')
            {
                Push(&head, s);
            }

            if (s == ')' || s == '}' || s == ']')
            {
                if (!head)
                {
                    flag = false;
                    break;
                }

                if (head->s == '(' && s == ')') Pop(&head, &s_1);
                else if (head->s == '[' && s == ']') Pop(&head, &s_1);
                else if (head->s == '{' && s == '}') Pop(&head, &s_1);
            }
        }

        if (!head && flag)
            printf("YES\n");
        else
            printf("NO\n");

        printf("%s", str);
    }

    return 0;
}

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

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

Здесь ошибка (буква := массив) :

while ((s = str) != '\n')

В каждой итерации цикла переменной s вы хотели присвоить начало строки. А нужно проходить все буквы. Чтобы делать итерацию по строке нужно использовать указатель типа char *.

// указатель на первую букву
char * sp = & (str[0]);
// цикл сравения буквы , что на указателе
while ( ( * sp ) != '\n' ){
  // для удобства можете сделать переменную s
  char s = ( * sp ) ;
  ...
  // в конце цикла переходите на следующую букву
  ++ sp ; }
→ Ссылка