我正在尝试创建一个程序来读取文件并计算以 'a'
开头的单词数。
我的想法是:
扫描一个字符,看它是否是字母。
如果不是那么我就知道下一个字符是一个新词
扫描下一个字符以检查它是
'a'
还是'A'
我想知道是否有一种简单的方法可以使用 fgetc()
扫描下一个字符,同时仍然记得前一个字符。
类似于:
char letter;
int aCount = 0;
while ((letter = fgetc(testFile)) != EOF) {
if (isalpha(letter) == false && ('nextCharacter' == 'a' || 'nextCharacter' == 'A')) {
aCount++;
}
}
非常感谢。
最佳答案
你的代码有几个问题:
- 从文件中读取的字节应存储到
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);
关于c - fget(c) - 在保存前一个字符的同时扫描下一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590580/