在C中使用getchar();每次使用它都会移动到下一个字符吗?包括在任务操作中?

时间:2016-05-26 17:14:46

标签: c getchar

我在用C语言编写程序时使用getchar()(在课程的这一点上还不允许使用scanf。)我想知道如果它移动到下一个,我是否每次调用它;包括在任务操作期间。例如;我试图从控制台读取双倍;并确定前面是否有负号。如果是的话;我想将变量neg指定为1(这样我可以判断最终结果是否应该返回负数)然后我想移动到下一个字符来进行实际的双重计算而不是。 前)

    int x = getchar();
      int neg = 0;

      if(x == '-') {
      neg = 1;
    x = getchar(); // will this make it so the next time I use the x        
      }            // variable it will be past the negative sign and to the
                   //first actual digit?

1 个答案:

答案 0 :(得分:5)

是的,每次拨打getchar()时,它都会读取下一个字符(前提是下一个字符可供阅读)。

引用C11,章节§7.21.7.6

  

getchar()函数返回指向的输入流中的下一个字符   stdin

如果没有有效被阅读,

  

如果流位于文件结尾,则设置流的文件结束指示符   getchar返回EOF。如果发生读取错误,则设置流的错误指示符   getchar会返回EOF