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]的三个输入.
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工作原理.
检查空格字符,不要添加/计数.getchar()返回您点击的所有字符,包括新行和空格.
while(i < 6)
{
temp[i] = getchar();
if (isspace(temp[i]))
continue;
putchar(temp[i]);
i++;
}
Run Code Online (Sandbox Code Playgroud)