从终端读取输入

问题描述:

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

所以程序正常启动,用户必须提供一些指令。 我希望程序能够等待用户给出的指示(在终端上录音),然后执行所有这些指令。

我只能使用函数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

'输入'? :D好。 –

+1

你没有使用'read'函数,你正在使用'getline'函数。与你的老师或其他人核实。 –

+1

是的,这是可能的。目前还不清楚如何管理输入信息或它们所代表的内容,但如果要将它们作为单个字符串进行管理,则可以使用一组字符串(或者等价地指定一组指向动态分配的字符串缓冲区的字符指针) 。 – lurker

退出开关输入模式,一种常见的方式,我认为你应该做

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

但是,如果你这样做,你如果有麻烦例如,第一个输入为42个字符,第二个输入为30个,因为读取功能不会重置“行”缓冲区。 如果可以使用memset或者使用你自己的函数来做到这一点!

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