我正在做一个项目,我必须从终端读取数据。
因此程序正常启动,用户必须提供一些说明。 我希望程序等待用户给出的指令(在终端中录制),然后执行所有这些指令。
我只能使用函数read
来获取输入。
到现在为止,我发现了下面的方式
int main (void)
{
char line[50];
int ret;
printf ("\nEnter string below\n");
while ((ret = read(0, line, 50)) != -1)
{
line[ret] = '\0';
printf ("result %s\n", line);
}
}
它有效,但我想输入所有说明,然后按ENTER键退出输入模式并对其进行处理。
有可能吗? 此外,是否有一种使用CRTL + D退出输入模式的常用方法
由于
答案 0 :(得分:1)
我认为你应该这样做
while (read(0, line, 50) > 0)
printf("%s\n", line);
但如果你这样做,如果第一个输入有42个字符,第二个输入为30,因为read函数没有重置“line”缓冲区,你就会遇到麻烦。 如果可以,请使用memset或使用自己的功能进行操作!
为什么> 0而不是!= -1:因为如果是错误,则返回-1,如果是输入的末尾,则返回0。