我正在编写一个函数,用于计算文件中单词的数量。单词可以由任意数量的空格字符分隔。文件中可能有整数,但程序应该只计算至少包含一个字母字符的单词。
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,但在我的情况下我很难理解如何使用它们)。
如果您能帮忙解决这个问题,我将非常感激。
isalnum()
函数将字符分离出来,该函数将保留字母和数字。然后使用isalpha()
函数测试单词是否至少有一个字母字符。 - Weather Vaneflag |= isalph(c)
。当您发现单词结束时,请仅在标志设置为true时递增。 - Ôrel