我正在编写一个函数来计算文件中的单词数。单词可以由任意数量的空白字符分隔。文件中可以有整数,但程序应该只计算至少有一个字母字符的单词。
int word_count(const char *filename)
{
int ch;
int state;
int count = 0;
FILE *fileHandle;
if ((fileHandle = fopen(filename, "r")) == NULL){
return -1;
}
state = OUT;
count = 0;
while ((ch = fgetc(fileHandle)) != EOF){
if (isspace(ch))
state = OUT;
else if (state == OUT){
state = IN;
++count;
}
}
fclose(fileHandle);
return count;
}
我想出了如何处理空格,但我不知道如何不计算至少没有一个字母字符的组合(我知道 isalpha 和 isdigit,但我很难理解如何在我的应用程序中使用它们)案件)。
我将衷心感谢您的帮助。
您只需替换:
else if (state == OUT){
with:
else if (state == OUT && isalpha(ch)){
所以你将状态设置为IN
在第一个字符并将其计为单词。
注意你的数数last.First
作为一个单词,考虑使用(!isalnum(ch))
代替(isspace(ch))
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)