从getchar读取输入

Mco*_*orz 1 c c++ getch putchar getchar

while(1)
{
    if(i == 6)
        break;
    temp[i] = getchar();
    putchar(temp[i]);
    i++;
}
Run Code Online (Sandbox Code Playgroud)

每当我必须以这种方式使用getchar时,它也接受输入作为输入之一,因此我被限制只输入三个字符而不是6.为什么getchar将输入作为输入之一?怎么避免这个?

输入:

1
2
3
Run Code Online (Sandbox Code Playgroud)

此循环中断后因为按下的三个返回被认为是temp [1],temp [3]和temp [5]的三个输入.

hac*_*cks 9

getchar一次读一个字符.在按下Enter键时,您将换行字符传递\n给C标准缓冲区,该缓冲区也会getchar在下一次调用时读取getchar.要避免这个\n角色,你可以尝试这个

while(1)
{
    if(i == 6)
        break;
    if((temp[i] = getchar()) != '\n')
    {
        putchar(temp[i]);
        i++;
    }
}   
Run Code Online (Sandbox Code Playgroud)

另请阅读此答案以了解其getchar工作原理.


egu*_*gur 5

检查空格字符,不要添加/计数.getchar()返回您点击的所有字符,包括新行和空格.

while(i < 6)
{
    temp[i] = getchar();
    if (isspace(temp[i]))
        continue;

    putchar(temp[i]);
    i++;
}
Run Code Online (Sandbox Code Playgroud)