c - C:如何在一次使用scanf一个字符时从键盘或文件获取输入结束时停止循环
问题描述
void main(void)
{
char character;
do {
scanf("%c", &character);
printf("%c", character);
} while (character != EOF);
}
我将逐个字符处理输入的字符,并且只允许使用scanf()。但是,while 循环不会停止。由于我可能需要使用多行字符串处理输入,因此不可能再添加一个条件:字符!= '\n'。有人可以帮我解决这个问题吗?谢谢!
解决方案
你有一个错误的期望。当scanf()
在匹配输入项或识别匹配失败之前遇到输入结束时,它返回 EOF
. 在任何情况下,它都不会修改与未匹配的输入项关联的数据值。
您忽略scanf
了 的返回值,这通常是一件危险的事情,而是测试对象中的scanf
记录是否EOF
与输入项相关联,在您的特定情况下,它绝不能这样做。
推荐阅读
- c# - 如何在 UWP 中添加 mediaplayerelements 控件
- c# - ASP.Net 子应用程序抛出实体框架错误。
- javascript - 堆叠 UIkit.modal 内置对话框
- javascript - AngularJs 文本框验证,使用正则表达式负前瞻限制字符
- node.js - Nodejs应用程序在本地主机上工作但在heroku上崩溃
- django - urlpatterns += (静态(settings.STATIC_URL,ducoment_root=settings.STATIC_ROOT))
- websocket - Wildfly 13 中的 Webscoket 库
- c++ - 使用动态数组的 C++ 逻辑错误
- perl - 从 HTML 中的数组中输出所有名称
- .net - 使用 SqlBulkCopy 插入的数据在数据库中占用的空间比使用 INSERT 语句多 9 到 92 倍