Программа подсчёта числа слов в текстовом файле - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Программа подсчёта числа слов в текстовом файле. Результат подсчёта записываются во второй текстовый файл( имена файлов передаются в качестве аргументов командной строки при запуске программы).Пример вывода программы для текстового файла. QWER REEt 2 слова 9 букв

Решение задачи: «Программа подсчёта числа слов в текстовом файле»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
    int words_total=0;                  // общее кол-во слов
    int lines_total=0;                  // аналогично для строк
    int symbols_total=0;                // и символов
    int i;
    for (i=1;i<argc;++i)                // перебираем параметры переданные в программу (имена файлов)
    {
        FILE* file=fopen(argv[i], "r"); 
        int words=0;                    
        int lines=0;                                    
        char prev_c=0;                  
        while (!feof(file))             
        {
            char c=fgetc(file);         // читаем символ из файла                
            if (c=='\n')                // если считали символ переноса строки, то
            {
                lines++;                
                words++;                
            }
            if (c==' ' && prev_c!=' ')  // если считали пробел, и предыдущий символ не пробел, значит считали слово
                words++;                // увеличивем кол-во слов
            prev_c=c;                   // заносим текущий символ в предыдущий
        }
        int symbols = ftell(file);//получаем размер файла
        fclose(file);     
        char fileName[256];             // тут будем хранить имя файла (без пути к нему)
        int j=strlen(argv[i]);          
        while (argv[i][j]!='/' && j>=0) 
            j--;                        
        strcpy(fileName, argv[i]+j+1);  
        printf("%d %d %d %s\n", lines, words, symbols, fileName);   
        words_total+=words;             
        symbols_total+=symbols;        
        lines_total+=lines;           
    }
    if (argc!=2)                        // если в параметрах не один файл, то
        printf("Total: %d %d %d\n",lines_total, words_total, symbols_total); 
    return 0;
}

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

  1. Объединение всех вводимых файлов в один выводимый поток
  2. Инициализация переменных: words_total, lines_total, symbols_total, i, file, words, lines, prev_c, fileName, j, argv

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


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

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

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