Подсчёт слов разной длины из файла - 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;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Подсчитывается количество слов в файле с помощью функции count_if, которая принимает два аргумента: файловый указатель и функцию обратного вызова.
  3. В функции main открывается файл config.ini с помощью функции fopen.
  4. Если файл успешно открыт, то вызывается функция count_if, передавая в нее файловый указатель и функцию обратного вызова isalpha, которая проверяет является ли символ буквой.
  5. Результат подсчета слов сохраняется в переменной n.
  6. Файл закрывается с помощью функции fclose.
  7. Выводится результат подсчета слов на экран с помощью функции printf.
  8. Если файл config.ini не удалось открыть, то выводится сообщение об ошибке и программа завершается.
  9. Комментарии в коде отформатированы с отступами, чтобы они не мешали чтению кода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы