Как переменной 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 ; }