Дан текстовый файл. Вывести первое слово текста наибольшей длины - C (СИ)
Формулировка задачи:
Дан текстовый файл. Вывести первое слово текста наибольшей длины. Словом считать набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки.
Помогите пожалуйста
Решение задачи: «Дан текстовый файл. Вывести первое слово текста наибольшей длины»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define FILE_NAME "file.txt"
int main(void) {
char current[BUFSIZ], longest[BUFSIZ];
size_t maxlen, lastlen;
FILE * f;
if ( ! ( f = fopen(FILE_NAME, "r") ) ) {
fprintf(stderr, "Can't open %s\n", FILE_NAME);
return 1;
}
maxlen = 0;
while ( fscanf(f, "%s", current) == 1 ) {
if ( ( lastlen = strlen(current) ) > maxlen ) {
strcpy(longest, current);
maxlen = lastlen;
}
}
fclose(f);
printf("First longest word: %s\n", longest);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками
- Определение имени файла, с которым будет работать программа
- Объявление переменных: текущей строки, строки с наибольшей длиной, переменных для хранения размеров этих строк и файла
- Проверка открытия файла с помощью функции fopen и вывод сообщения об ошибке в случае неудачи
- Установка начального значения максимальной длины строки равным 0
- Чтение файла посимвольно с помощью цикла while и функции fscanf, с сохранением каждого слова в текущую строку
- В каждой итерации цикла проверка длины текущей строки с помощью функции strlen и сравнение её с текущей максимальной длиной
- Если текущая длина строки больше максимальной, то обновление значения максимальной длины и копирование текущей строки в строку с наибольшей длиной
- Закрытие файла с помощью функции fclose
- Вывод на экран первого слова с наибольшей длиной с помощью функции printf