【发布时间】:2018-02-04 21:47:20
【问题描述】:
我目前正在练习。我的程序正在运行,我只是想让它更健壮和万无一失。代码如下:
printf("Enter Name : ");
memset(userinput, '\0', 50);
fgets(userinput, 50, stdin);
我不小心按了回车键(换行符),对于我的程序,系统只是悬在那里,无法再接受输入。我只能使用fgets。那么有什么方法可以拒绝\n 作为字段输入?
【问题讨论】:
-
不,
fgets在输入字符串的末尾保留换行符,你必须忽略它或remove it。请张贴Minimal, Complete, and Verifiable example,显示您尝试过的内容。 -
您可以检查第一个字符是否是换行符并再次询问
-
如果用户点击空白然后换行,您可能不想接受它作为名称。您可能也不愿意接受“
@#!%%&”作为名称。你需要仔细考虑你想从这段代码中得到什么。 -
@JonathanLeffler True, always sanitize user input