我正在尝试执行一个循环,从文件中读取单个字符,直到找到'\n'
或'*'
这是我写的循环
i=0;
do {
fscanf(fin,"%c",&word[i]);
i++;
}while(word[i]!='*'&&word[i]!='\n');
现在,我尝试看看为什么它在调试器中不起作用。当我在fscanf之后立即打印word[i]
时,它会显示正确的字符,但是如果我在与word[i]
或'*'
进行比较时尝试打印'\n'
,则会显示word[i]
为'\000'
循环永无止境。我也尝试了fgetc,但是我有同样的错误。
您的while
条件未测试您刚刚读取的word
的相同元素,因为i++
在测试前增加了变量。
将测试更改为使用word[i-1]
而不是word[i]
进行调整。
BTW,word[i] = fgetc(fin);
是读取一个字符的一种更简单的方法。