Программа подсчёта числа слов в текстовом файле - 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;
}
Объяснение кода листинга программы
- Объединение всех вводимых файлов в один выводимый поток
- Инициализация переменных: words_total, lines_total, symbols_total, i, file, words, lines, prev_c, fileName, j, argv