そのような 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;
EDIT @Mark Byers - ありがとう、しかしその c は目的のために拒否され、無限ループで何度も条件を満たさないでしょうか?