请编写函数,统计英文文章的单词数量。
函数原型
int CountWord(FILE *f);
说明:参数 f 为文件指针。函数值为该文件的单词数量。
裁判程序
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>int CountWord(FILE *f);int main()
{FILE *f;int n;f = fopen("Story.txt", "r");if (!f){puts("文件无法打开!");exit(1);}n = CountWord(f);if (fclose(f)){puts("文件无法关闭!");exit(1);}printf("单词数: %d\n", n);return 0;
}/* 你提交的代码将被嵌在这里 */
打开 Windows 记事本软件,复制下面的文章内容,保存文件并命名为“Story.txt”。
Story.txt
A Cure for a HeadacheOne day a man went into a chemist's shop and said, "Have you anything to cure a
headache?"
The chemist took a bottle from a shelf, held it under the gentleman's nose and
took out the cork. The smell was so strong that tears came into the man's eyes
and ran down his cheeks.
"What did you do that for?" he said angrily, as soon as he could get back his
breath.
"But that medicine has cured your headache, hasn't it?" said the chemist.
"You fool," said the man, "It's my wife that has the headache, not me!"
样例输入
(无)
输出样例
单词数: 108
代码:
int CountWord(FILE* f)
{char word[1000];int count = 0;while (fscanf(f, "%s", word) != EOF){for (int i = 0; word[i]; i++){if (isalpha(word[i])){count++;}}}return count;
}
注意:
1.fscanf(f, "%s", word) != EOF 每次读取一个字符串,遇到空格不读,地址为word
2.isalpha为检查所传的字符是否是字母的函数。