【发布时间】:2013-11-25 17:01:02
【问题描述】:
我正在尝试创建一个 C 程序,用作 UNIX 系统的简单命令行解释器。我使用 fgets() 读取用户输入,然后将输入存储在要解析的缓冲区中。如果唯一的用户输入是按回车,我想重新发出提示。有没有办法检测返回键是否是在提示符下输入的唯一键?下面是我目前尝试过的一段 sn-p 代码:
for (;;) {
printf("$prompt$ ");
fflush(stdout);
fgets(commandBuffer, 200, stdin);
/* remove trailing newline:*/
ln = strlen(commandLine) - 1;
if(commandLine[ln] == '\n')
commandLine[ln] = '\0';
/* attempt to handle if user input is ONLY return key:*/
if(commandLine[0] == '\n')
continue;
【问题讨论】:
-
对于(罕见的)
fgets()返回零长度字符串的情况,代码将失败。 -
这可以通过检查 sizeof 来解决。
-
@JFA 请详细了解“检查 sizeof”如何提供帮助。
-
@chux 我在回复 alk 的声明,但现在我想起来了,我想你想要的是
strlen。我在考虑sizeof做别的事情。