【发布时间】:2016-05-02 21:41:01
【问题描述】:
我有一个名为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));
}
【问题讨论】:
-
我对 C 不太熟悉,但你能把你的文件读成一个很大的长字符串,然后用空格分割,然后得到
array.Length属性吗? -
但是你最好的朋友是一个代码格式化程序。单间距和合理的缩进真的很有用。
-
它适用于单行,但是当我有包含 60 个单词的文本时,它会低估它:/
-
您可能还想将换行符算作空格...
-
@Eugene Sh.天才。那行得通。现在我需要解释为什么我的数组在文件末尾搞砸了。文件中的内容:gyazo.com/d7a6b3bd1fd5ae843d5d427e72980f28 数组中文件的输出:gyazo.com/bdc1d73827ae61d80fc3a3e203a3c987