例如,用户可以输入l
s 或ls command
. 该命令可能不会每次都出现。如何检查用户是否输入了命令?的情况下scanf()
,如果命令存在,程序可以正常工作,但如果命令不存在,那么它将等待输入。我不希望程序等待这个输入
问问题
123 次
3 回答
3
select可用于此目的。因此,您可以在进行(阻塞)读取之前查询标准输入(超时或非阻塞),如果有要读取的内容。
select() 和 pselect() 允许程序监视多个文件描述符,等待一个或多个文件描述符“准备好”用于某种类型的 I/O 操作(例如,可能的输入)。如果可以在没有阻塞的情况下执行相应的 I/O 操作(例如 read(2)),则认为文件描述符已准备就绪。
于 2012-09-20T17:03:33.337 回答
0
所有标准 C 库输入函数都是面向行的,这意味着它们要等到用户输入某些内容,或者至少按下回车键。
如果您想以比这更多的交互方式响应输入,那么您将需要使用标准库之外的东西。您所拥有的确切内容将取决于您正在编码的平台。
于 2012-09-20T17:03:17.810 回答
0
不要使用scanf
. 相反,用于fgets
读取整行。然后处理该行,例如标记它 ( strtok
) 并计算它包含多少个单词:
char buf[1024];
fgets(buf, sizeof buf, stdin); // returns after user presses Enter
// (should check that this is not NULL)
char * p = strtok(buf, " \t\n");
while (p)
{
// p now points to a token
p = strtok(NULL, " \t\n");
}
于 2012-09-20T17:06:20.620 回答