请编写函数,统计英文文章的单词数量。
int CountWord(FILE *f);
说明:参数 f 为文件指针。函数值为该文件的单词数量。
- #include
- #include
- #include
-
- 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 Headache
-
- One 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为检查所传的字符是否是字母的函数。