Найти самую длинную строку в файле - C (СИ)
Формулировка задачи:
Собственно прога находит самую длинную строку в файле, но если длинных строк несколько то выводит их все. Мне нужно чтобы выводило только одну.
#include <string.h>
#include <conio.h>
#include <stdio.h>
FILE *f;
char s[255];
int i=0;
int main()
{
f=fopen("m.txt","r");
if (( f = fopen( "m.txt", "r" )) == NULL ) {
fprintf( stderr, "Can't open, exiting...\n" );
exit( 1 );
}
while(!feof(f))
{fscanf(f,"%s",&s);
if (strlen(s)>i) i=strlen(s); //находим длину самой большой строки
}
rewind(f);
printf("The longest string:\n");
while(!feof(f))
{fscanf(f,"%s",&s);
if (strlen(s)==i) printf("%s\n",s);} //если длина строки совпадает с найденной максимальной, то выводим её
fclose(f);
getch();
}Решение задачи: «Найти самую длинную строку в файле»
textual
Листинг программы
while(!feof(f)){
fscanf(f,"%s",&s);
if (strlen(s)==i){
printf("%s\n",s);
break;
}
}
Объяснение кода листинга программы
- В начале программы открывается файл с помощью функции fopen.
- Затем мы проверяем, достигнут ли конец файла с помощью функции feof.
- Если файл не пуст, то считываем строку с помощью функции fscanf.
- Мы используем функцию strlen для определения длины строки.
- Если длина текущей строки равна переменной i, то мы выводим эту строку с помощью функции printf и прерываем цикл с помощью оператора break.
- Если длина текущей строки не равна переменной i, то мы продолжаем считывать строки из файла.
- Цикл продолжается до тех пор, пока не будет достигнут конец файла.
- Если длина текущей строки больше переменной i, то переменная i обновляется значением длины текущей строки.
- В конце программы мы закрываем файл с помощью функции fclose.