Подсчитать количество слов в файле - C (СИ) (74767)
Формулировка задачи:
Добрый день. Подскажите пожалуйста, как лучше посчитать количество слов в файле? Вот я сделал, однако он цифры тоже считает за слова. Как сделать так, что бы цифры не считались за слова?
Вообще, я думал что сейчас цифры не должно считать как слова, ибо 40 это кд нуля. Однако нет. Всё равно считает цифры как слово
int main () { int fSpace = 1, nCount = 0; char ch[2] = {0}; FILE *fh = fopen("text.txt", "r"); while (! feof(fh)) { fgets(ch, 2, fh); if (ch[0] > 41) fSpace = 0; else if (0 == fSpace) { nCount++; fSpace = 1; } ch[0] = 0; } fclose(fh); printf("%d\n", nCount); }
Решение задачи: «Подсчитать количество слов в файле»
textual
Листинг программы
int main(int argc,char** argv) { int iChr = 0; int iCnt = 0; bool bPrev = false; bool bNext = false; FILE* pIn = fopen("text.txt","rt"); if (!pIn) { // Error ! return 0; } while ((iChr = fgetc(pIn)) != EOF) { bNext = isalpha(iChr) ? true : false; if (bNext) { bPrev = true; } if (bPrev && !bNext) { bPrev = false; ++iCnt; } } fclose(pIn); printf("Words total: %d\n",iCnt); return 0; }
Объяснение кода листинга программы
Вывод:
- Объявлены переменные:
- iChr - счётчик символов
- iCnt - счётчик слов
- bPrev - предыдущий символ был буквой
- bNext - следующий символ является буквой
- pIn - указатель на файл
- Проверка, открылся ли файл
- Если файл не открылся, выводится сообщение об ошибке и возвращается 0
- Входящие данные считываются в цикле while
- iChr считывается как символ из файла с помощью fgetc
- bNext определяется, является ли текущий символ буквой с помощью isalpha
- Если текущий символ является буквой, bNext становится true
- Если предыдущий символ был буквой и текущий символ не является буквой, увеличивается счётчик слов iCnt
- После достижения конца файла, выводится количество слов и счётчик слов сбрасывается в 0
- Файл закрывается с помощью fclose
- Выводится количество слов в файле с помощью printf
- Возвращается 0, заканчивая выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д