Подсчитать сколько раз появляется каждое ключевое слово языка С в символьном файле с программой на С - C (СИ)
Формулировка задачи:
Всем привет! Помогите Подсчитать сколько раз появляется каждое ключевое слово языка С в
символьном файле с программой на С.(под ключевым словом подразумевается for while do if).использовать функции fopen(), fclose(), fgets()
Решение задачи: «Подсчитать сколько раз появляется каждое ключевое слово языка С в символьном файле с программой на С»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int Search(char line[], char word[])
{
char *p, *start;
int count = 0;
start = line;
while(1){
p = strstr(start, word);
if(p == NULL)break;
count++;
start = p + strlen(word);
}
return count;
}
int main()
{
int nf = 0, nw = 0, nd = 0, ni = 0;
char s[128];
FILE *fp;
fp = fopen("f1.txt", "r");
while(fgets(s, 128, fp)){
nf += Search(s, "for");
nw += Search(s, "while");
nd += Search(s, "do");
ni += Search(s, "if");
}
fclose(fp);
puts("File f1 has words:");
printf("'for' %d times,\n'while' %d times,\n'do' %d times,\n and 'if' %d times.\n", nf, nw, nd, ni);
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с файлами и строками.
- Определяется функция
Search, которая принимает два аргумента: строкуlineи словоword. Функция ищет все вхождения слова в строке и возвращает количество таких вхождений. - В функции
mainинициализируются переменныеnf,nw,ndиniсо значением 0. Они используются для подсчета количества вхождений ключевых словfor,while,doиifсоответственно. - Открывается файл
f1.txtдля чтения с помощью функцииfopen. - В цикле
whileпроисходит чтение строки из файла с помощью функцииfgets. - Каждая прочитанная строка передается в функцию
Searchдля подсчета вхождений каждого ключевого слова. - После окончания чтения файла, функция
fcloseзакрывает файл. - Выводится количество вхождений каждого ключевого слова с помощью функции
printf. - Программа возвращает 0, что означает успешное выполнение.