Чтение из файла. Поиск палиндрома - C (СИ)
Формулировка задачи:
Здравствуйте, столкнулся с проблемой в цикле. 2 раза выводится на экран последнее сообщение.
#include <stdio.h>
#include <string.h>
int check (char str[])
{
int i,length;
length=strlen(str);
if (length==1) return 0;
for (i=0;i<length;i++)
if (str[i]!=str[(length-1)-i]) return 0;
return 1;
}
int main()
{
char str[80];
FILE *file;
if ((file=fopen("test.txt","r"))==NULL)
{
puts("File not found!");
return 1;
}
while(!feof(file))
{
fscanf(file, "%s", str);
if (check(str)==1)
printf (" \n Slovo: %s Palindrome \n", str);
else
printf("\n SLOVO: %s Not palindrome \n",str);
}
return 0;
}Решение задачи: «Чтение из файла. Поиск палиндрома»
textual
Листинг программы
while(fscanf(file, "%s", str) == 1)
{
//fscanf(file, "%s", str);
if (check(str)==1)
printf (" \n Slovo: %s Palindrome \n", str);
else
printf("\n SLOVO: %s Not palindrome \n",str);
}
Объяснение кода листинга программы
- В цикле while происходит чтение из файла с помощью функции fscanf. В качестве параметра функции указывается файл, а в качестве формата – строка
%s, которая означает, что будет прочитана строка (без пробелов). Переменная str предназначена для хранения прочитанной строки. - Если проверка на палиндром (функция check) возвращает 1, то выводится сообщение о том, что слово является палиндромом.
- Если проверка на палиндром (функция check) возвращает 0, то выводится сообщение о том, что слово не является палиндромом.