谁来给我解释解释getchar和putchar
#include <stdio.h>
#define SPACE ' '
int main(void)
{
char ch;
ch = getchar();
while(ch != '\n')
{
if(ch == SPACE)
putchar(ch);
else
putchar(ch + 1);
ch = getchar();
}
putchar(ch);
return 0;
}
为什么在我输入一个字符的时候,不是直接转换字符显示,而是等我输入回车结束循环后才输出字符串?也就是putchar(ch + 1)这条语句,即使是这样输出,可定义的ch是字符型变量,而不是字符串数组,为什么可以输出一串字符串?
[解决办法]
因为现在多数系统采用的是缓冲输入,也就是等用户按下回车后再把输入的内容一次性送到输入对列,getchar一次从输入队列里面读取一个字符,你用到了循环,当然会打印整个字符串,直到最后一个换行符!只有采用非缓冲式输入的系统才是即时回显,也就是你输入一个就显示一个,例如IBM PC就有专门的非缓冲输入函数!