[英]Counting words in a file in C
我正在编写一个计算文件中单词数量的函数。 单词可以用任何数量的空白字符分隔。 文件中可以有整数,但程序只应计算至少包含一个字母字符的单词。
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){
有:
else if (state == OUT && isalpha(ch)){
因此,您在第一个字符处将状态设置为IN
并将其计为字。 请注意,你算是last.First
一个。 last.First
作为一个单词,考虑使用(!isalnum(ch))
而不是(isspace(ch))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.