【发布时间】:2020-03-19 13:05:14
【问题描述】:
我正在尝试执行一个循环,从文件中读取单个字符,直到找到'\n' 或'*'。
这是我写的循环:
i=0;
do {
fscanf(fin,"%c",&word[i]);
i++;
} while(word[i]!='*'&&word[i]!='\n');
现在我试着看看为什么它不能与调试器一起工作。当我在fscanf 之后立即打印word[i] 时,它会显示正确的字符,但是如果我在与'*' 或'\n' 进行比较时尝试打印word[i],它会告诉我word[i] 是'\000' 并且循环永远不会结束。
我也试过fgetc,但我有同样的错误。
【问题讨论】:
-
在我看来
i++意味着fscanf(fin,"%c",&word[i])中的i与while(word[i]!='*'&&word[i]!='\n')中的i的值不同。 -
我没有意识到,我在循环中放了一个 if 子句,现在它可以工作了,谢谢
-
你还应该添加一个条件来检查你没有超过单词数组的长度。
-
也在调试器中打印
i
标签: c input char infinite-loop