首页 > 解决方案 > C语言中ungetc和getchar函数的使用

问题描述

我最近开始学习 C 中的 I/O 文件操作。在这段代码中,我遇到了一个问题,即使我输入了非空白字符 ' ' ,while 循环也没有退出。请告诉我我错在哪里以及如何退出while循环。

#include <stdio.h>
int main()
{
  char a = 0;
  while ((a = (char)getchar()) != ' ');
  ungetc(a, stdin);
  printf("\n Value of A is  %c", a);
  return 0;
}

标签: cio

解决方案


getchar函数返回一个int是有原因的。如果有一个字符,它可以返回一个字符,或者EOF指示输入流的结束。所以使用char变量来存储结果并不是一个好主意。

EOF然后,如果遇到这种情况,您还应该始终进行测试并采取相应措施。

此外,通常这些流是行缓冲的,因此在输入整行之前您不会看到任何输入。


推荐阅读