我正在编写一个计算文件中单词数量的函数。单词可以用任何数量的空白字符分隔。文件中可以有整数,但程序只应计算至少包含一个字母字符的单词。
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,但我很难理解如何使用在我的情况下)。
我真的很感谢你的帮助。
答案 0 :(得分:1)
你可以直接替换:
else if (state == OUT){
使用:
else if (state == OUT && isalpha(ch)){
因此,您在第一个字符处将状态设置为IN
并将其计为字。
请注意,您将last.First
计为一个单词,请考虑使用(!isalnum(ch))
代替(isspace(ch))
。