为什么STDIN不中断而退出?

问题描述 投票:0回答:1
char c;

while (read(0, &c, 1))
{
    if(c == '\n')
        break;
}

这是我程序的一部分,我认为当我输入Enter时应该将其退出。

但是它不起作用。

Simillarly,

int line = 3;
char c;

while (read(0, &c, 1))
{
    line--;
    if (line == 0)
       break ;
}

此代码也不起作用。为什么?以及我该如何解决?

c unix stdin
1个回答
0
投票

尽管您未在问题中指定,但我怀疑您已将c定义为int变量。这意味着它可能包含四个字节。您的read()语句仅更改这些值之一。

也许可以将c声明为char ,但是您将无法检测到EOF的返回值。所以也许改用getchar()

如果到达文件末尾,则read()的返回值将为零;如果发生其他错误,则为-1。要将后者与'\xFF'区分开,可以检查全局变量errno的值。不过,使用getchar()会更有意义。

© www.soinside.com 2019 - 2024. All rights reserved.