我有一个名为的文件myf
,其中包含很多文本,我正在尝试使用空格来计算单词的数量。基本上,在我的程序的 count 方法中,有一个变量 int d ,它的作用类似于布尔函数。此外,还有一个名为count
.
我有一个for
循环,它将遍历放入方法计数参数的数组,并查看指针*p
是否为非字母。如果它是非字母 AND d=0
,d=1
则count
递增。这样,如果下一个字符也是非空格,d=1
那么 else if 语句将不会再次递增。d 重置为 0 的唯一方法是如果存在空格,此时如果找到另一个字母,它将再次递增。然后方法count将返回变量count。看起来很简单,但我总是得到错误的数字。
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#include <ctype.h>
int count(char x[]) {
int d = 0;
int count = 0;
for (char *p = x; *p != EOF; *p++) {
// this will traverse file
printf("%c", *p);
// this is just to see the output of the file
if (*p == ' ' && d == 1) {
d = 0;
}
else if (*p != ' ' && d == 0) {
count++;
d = 1;
}
}
return count;
}
int main() {
char c;
int r = 0;
char l[1000];
FILE *fp = fopen("myf", "r");
while ((c = fgetc(fp)) != EOF) {
l[r] = c;
r++;
}
printf("\n %d", count(l));
}