【发布时间】:2014-04-10 09:38:15
【问题描述】:
我正在尝试编写一个程序来打印在文本文件中找到的单词数。单词被定义为由任意数量的空格分隔的字符序列。
但是,当有多个空格时,我遇到了问题,因为它没有报告正确的字数。
到目前为止,这是我的代码:
#include <stdio.h>
int main()
{
FILE *fp;
char str;
int i=0;
/* opening file for reading */
fp = fopen("myfile.txt" , "r");
if(fp == NULL) {
perror("Error opening file");
return(-1);
}
while(( str = fgetc(fp)) != EOF ) {
if (str == ' ')
++i;
}
printf("%d\n", i);
fclose(fp);
return(0);
}
myfile.txt 是:
Let's do this! You can do it. Believe in yourself.
我不确定我使用的是 fgets、fscanf 还是 fgetc。
假设我在读取字符串时定义了 fscanf 函数中定义的空格
它打印 14 这是不正确的。我不确定如何考虑多个空格。在这种情况下,空格是单词之间的任意数量的空格。
【问题讨论】:
-
这是一个类似的问题和关于如何在 C 中修剪空格的答案。stackoverflow.com/questions/122616/…
-
isspace()in<stdlib.h>将检测任何空格,而不仅仅是空格。 -
您可以在循环中使用 fscanf,但这意味着将单词保存在数组中。
-
@KlasLindbäck
isspace()in<ctype.h>。 -
@BLUEPIXY 你是对的。我一定是用有缺陷的信息访问了一个网站。下次我会使用
man而不是一个糟糕的网络搜索引擎来查找它。
标签: c string character whitespace