这是一个小代码片段。
while((c = fgetc(fp)) != -1)
{
cCount++; // character count
if(c == '\n') lCount++; // line count
else
{
if(c == ' ' && prevC != ' ') wCount++; // word count
}
prevC = c; // previous character equals current character. Think of it as memory.
}
现在,当我使用包含上述片段代码的文件运行 wc
(按原样)时,我得到 48 个单词,但是当我对相同的输入数据使用我的程序时,我得到 59 个单词.
如何像wc一样计算字数?
最佳答案
您将任何不是空格的内容都视为有效单词。这意味着换行符后跟一个空格是一个单词,并且由于您的输入(即您的代码片段)是缩进的,所以您会得到一堆额外的单词。
你应该使用 isspace
检查空格而不是将字符与 ' '
进行比较:
while((c = fgetc(fp)) != EOF)
{
cCount++;
if (c == '\n')
lCount++;
if (isspace(c) && !isspace(prevC))
wCount++;
prevC = c;
}
关于c - 为什么我的 wc 实现给出了错误的字数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47076576/