循环中的几个语句

1 c while-loop logical-operators

我正在尝试放入另一条语句以逻辑AND结束while循环:

while ( (character != '\n') && ( i < 10 ) )
Run Code Online (Sandbox Code Playgroud)

...多余的+10:th个字母不会存储在数组中。但是我仍然可以输入输入,直到按ENTER /'\ n'为止。

我究竟做错了什么?“额外输入”会发生什么?

这是代码:

char character;
char buffer[81];
int i = 0;

do
{
    character = getchar();
    buffer[i] = character;
    ++i;
} while ( (character != '\n') && (i < 10) );

buffer[i-1] = '\0';
Run Code Online (Sandbox Code Playgroud)

klu*_*utt 7

该功能getchar不能直接从键盘读取。它从读取stdin。而且在大多数情况下,stdin直到您按Enter键,键盘上的输入内容才会出现。此行为超出您的控制范围,由您使用的终端确定。

因此,您的代码基本上可以正常工作,只是您应该更改buffer[i-1]buffer[i]。如果要直接检测按键,则将需要其他方法。标准库中没有好的函数可以执行此操作,但是这里有一个答案,为您提供了两种选择。/sf/answers/1424475671/