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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.     int words_total=0;                  // общее кол-во слов
  8.     int lines_total=0;                  // аналогично для строк
  9.     int symbols_total=0;                // и символов
  10.     int i;
  11.     for (i=1;i<argc;++i)                // перебираем параметры переданные в программу (имена файлов)
  12.     {
  13.         FILE* file=fopen(argv[i], "r");
  14.         int words=0;                    
  15.         int lines=0;                                    
  16.         char prev_c=0;                  
  17.         while (!feof(file))            
  18.         {
  19.             char c=fgetc(file);         // читаем символ из файла                
  20.             if (c=='\n')                // если считали символ переноса строки, то
  21.             {
  22.                 lines++;                
  23.                 words++;                
  24.             }
  25.             if (c==' ' && prev_c!=' ')  // если считали пробел, и предыдущий символ не пробел, значит считали слово
  26.                 words++;                // увеличивем кол-во слов
  27.             prev_c=c;                   // заносим текущий символ в предыдущий
  28.         }
  29.         int symbols = ftell(file);//получаем размер файла
  30.         fclose(file);    
  31.         char fileName[256];             // тут будем хранить имя файла (без пути к нему)
  32.         int j=strlen(argv[i]);          
  33.         while (argv[i][j]!='/' && j>=0)
  34.             j--;                        
  35.         strcpy(fileName, argv[i]+j+1);  
  36.         printf("%d %d %d %s\n", lines, words, symbols, fileName);  
  37.         words_total+=words;            
  38.         symbols_total+=symbols;        
  39.         lines_total+=lines;          
  40.     }
  41.     if (argc!=2)                        // если в параметрах не один файл, то
  42.         printf("Total: %d %d %d\n",lines_total, words_total, symbols_total);
  43.     return 0;
  44. }

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

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

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


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

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

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы