Подсчёт слов разной длины из файла - C (СИ)
Формулировка задачи:
Здравствуйте, у меня такой вопрос: подсчитать слова разной длины из файла
Решение задачи: «Подсчёт слов разной длины из файла»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> size_t count_if(FILE* _in, int (*pfn)(int)){ int p, c, isc = (_in == stdin); size_t n = 0; p = '\0'; do { c = fgetc(_in); if((! isalpha(p) && p != '-') && (isalpha(c) || c == '-')) ++n; else if(c == '\n' && isc) break; p = c; } while(c != EOF); return n; } int main(void) { size_t n; FILE* fp = fopen("config.ini", "r"); if(fp != NULL){ n = count_if(fp, isalpha); fclose(fp); printf("count words: %u\n", n); } /* с консоли n = count_if(stdin, isalpha); printf("count words: %u\n", n); */ getchar(); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Подсчитывается количество слов в файле с помощью функции count_if, которая принимает два аргумента: файловый указатель и функцию обратного вызова.
- В функции main открывается файл
config.ini
с помощью функции fopen. - Если файл успешно открыт, то вызывается функция count_if, передавая в нее файловый указатель и функцию обратного вызова isalpha, которая проверяет является ли символ буквой.
- Результат подсчета слов сохраняется в переменной n.
- Файл закрывается с помощью функции fclose.
- Выводится результат подсчета слов на экран с помощью функции printf.
- Если файл
config.ini
не удалось открыть, то выводится сообщение об ошибке и программа завершается. - Комментарии в коде отформатированы с отступами, чтобы они не мешали чтению кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д