[英]How to read character until a char character?
我试图做一个循环,从文件中读取单个字符,直到找到'\\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]之前先增加计数器i
,这就是检查失败的原因。
试试吧
i=0;
do {
fscanf(fin,"%c",&word[i]);
}while(word[i]!='*'&&word[i++]!='\n');
我宁愿在循环中移动检查(如果满足条件则中断),而在while上检查字数组长度的测试。
其它的办法:
for(;;) {
int c = fgetc(fin);
if ( c == EOF ) {
break;
word[i] = c;
if( c == '*' || c == '\n' ) {
break;
}
}
您的while
条件不会测试您刚读过的word
的相同元素,因为i++
在测试之前会递增变量。
更改测试以使用word[i-1]
代替word[i]
对此进行调整。
顺便说一句, word[i] = fgetc(fin);
是读取一个字符的一种更简单的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.