Найти самую длинную строку в файле - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д