从终端读取输入

时间:2017-03-08 17:06:43

标签: c

我正在做一个项目,我必须从终端读取数据。

因此程序正常启动,用户必须提供一些说明。 我希望程序等待用户给出的指令(在终端中录制),然后执行所有这些指令。

我只能使用函数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退出输入模式的常用方法

由于

1 个答案:

答案 0 :(得分:1)

我认为你应该这样做

while (read(0, line, 50) > 0)
    printf("%s\n", line);

但如果你这样做,如果第一个输入有42个字符,第二个输入为30,因为read函数没有重置“line”缓冲区,你就会遇到麻烦。 如果可以,请使用memset或使用自己的功能进行操作!

为什么> 0而不是!= -1:因为如果是错误,则返回-1,如果是输入的末尾,则返回0。