我正在尝试创建一个读取文件的程序,并计算以'a'
开头的单词数。
我的想法是:
扫描角色,看它是否是字母。
如果不是,那么我会知道下一个字是一个新词
扫描下一个字符以检查它是'a'
还是'A'
我想知道的是,如果有一种简单的方法可以使用fgetc()
扫描下一个字符,同时还要记住上一个字符。
类似的东西:
char letter;
int aCount = 0;
while ((letter = fgetc(testFile)) != EOF) {
if (isalpha(letter) == false && ('nextCharacter' == 'a' || 'nextCharacter' == 'A')) {
aCount++;
}
}
非常感谢提前。
答案 0 :(得分:3)
您的代码存在一些问题:
int
变量中,以容纳EOF
和所有无符号字符值。如果将其存储到char
变量中,则无法可靠地检查EOF
。letter
检查当前单词是以'a'
还是'A'
开头。以下是更正后的版本:
int prev = ' '; // pretend there is a non letter before the first byte.
int c;
int aCount = 0;
while ((c = fgetc(testFile)) != EOF) {
if (!isalpha(prev) && (c == 'a' || c == 'A')) {
aCount++;
}
prev = c;
}
printf("there are %d words starting with 'a'\n", aCount);