首页 > 解决方案 > 如何读取字符直到一个字符?

问题描述

我正在尝试执行一个循环,从文件中读取单个字符,直到找到'\n''*'.

这是我写的循环:

i=0;
do { 
      fscanf(fin,"%c",&word[i]);
      i++;
    } while(word[i]!='*'&&word[i]!='\n');

现在我试图看看为什么它不能与调试器一起工作。当我word[i]在它之后立即打印时,它会向我显示正确的字符,但是,如果我在与它进行比较时fscanf尝试打印,或者它会向我显示,并且循环永远不会结束。word[i]'*''\n'word[i]'\000'

我也试过,fgetc但我有同样的错误。

标签: cinputcharinfinite-loop

解决方案


您必须确保您正在处理的字符与您刚刚读取的字符相同。

实际上,您在测试单词 [i] 之前增加计数器i,这就是您的检查失败的原因。

试试吧

i=0;
do { 
      fscanf(fin,"%c",&word[i]);
    }while(word[i]!='*'&&word[i++]!='\n');

我宁愿将检查移到循环中(如果条件满足则中断),同时检查单词数组长度的测试。


推荐阅读