c - 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;
}
解决方案
该getchar
函数返回一个int
是有原因的。如果有一个字符,它可以返回一个字符,或者EOF
指示输入流的结束。所以使用char
变量来存储结果并不是一个好主意。
EOF
然后,如果遇到这种情况,您还应该始终进行测试并采取相应措施。
此外,通常这些流是行缓冲的,因此在输入整行之前您不会看到任何输入。
推荐阅读
- android - 错误:此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容
- angular - 使用异步管道订阅 Observable 时如何处理 ExpressionChangedAfterItHasBeenCheckedError?
- reactjs - 如何在 React Native 中检查 null 条件
- reactjs - 删除复选框时反应如何修复,列表中的下一个在不应该时出现选中
- javascript - 如何通过动态表单获取选定 ID 的列?
- css - 哪个方面让我的 CSS 转换页面在移动设备上过渡变慢?
- python - 如何在 Python 中模拟以文本模式打开的文件
- c# - 如何找到当前登录电脑的azuer AD/office 365用户?
- safari - 无法在 Safari 中恢复 AudioContext
- python - 使用 matplotlib.animation.FuncAnimation 将 y 轴下限固定为 0,同时对两个子图不施加上限