我遇到过这样一个getword的例子。我了解所有检查等,但我对 ungetc 有疑问。
当c
满足if ((!isalpha(c)) || c == EOF)
且不满足while (isalnum(c))
时 -> 它不是字母,也不是数字 -ungetc
拒绝那个char
。
让我们假设它是'\n'
。
然后它到达return word
但是它不能被返回,因为它没有保存在任何数组中。那会发生什么?
while (isalnum(c)) {
if (cur >= size) {
size += buf;
word = realloc(word, sizeof(char) * size);
}
word[cur] = c;
cur++;
c = fgetc(fp);
}
if ((!isalpha(c)) || c == EOF) {
ungetc(c, fp);
}
return word;
编辑 @Mark Byers - 谢谢,但是 c 被拒绝是有目的的,并且不会在无限循环中一次又一次地满足条件?