繁体   English   中英

如何读取字符,直到一个char字符?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM