C语言getchar和putchat函数问题

getchar从键盘缓冲区读入一个字符
putchar向显示器输出一个字符。
这是我在视频看见的语法,而且我也实践了,getchar会把多余的字符作废,putchar也不会显示大于一个的字符。
假如如下例子
#include <stdio.h>
void main()
{
char c;
c=getchar();
putchar(c);
getch();
}
我输入10个d,也只是显示1个d而已。
但是下面这个程序
#include <stdio.h>
void main()
{
char c;
for(;(c=getchar())!='\n';) putchar(c);
putchar('\n');
getch();
}
我输入10个d,却显示10d,这是为什么呢?

你的第一个程序只执行了一次getchar();你输入的10个d他只被读取了一次,后面的9个都没有被读取,所以输出一个d。
你的第二个程序的for语句循环判断c=getchar(),如果他不等于换行符\n,则一直读取。分析如下,你输入了10个d,第一次循环c=getchar(),c读取了你的10个d的第一个d,并执行循环语句putchar(c),这样d被显示一次,继续循环c=getchar(),由于getchar是读取键盘缓冲区的字符,你刚才输入了10个字符d,只被读取了一个,还有9个d还在缓冲区,这次循环就读取了第二个d,然后第二次输出d到显示屏,这样下去到第十个d被读完后会缓冲区最后一个字符就换行,也就是你输完10个d后的回车符,for循环终止,最后输出换行符号\n
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-27
你把它写到了循环语句里,让它读到行末尾并且读一个就输出一个,当然会一直输出了。原来你只读了一个字符就输出当然只有一个字符显示。话说不会不认识for循环吧。
第2个回答  2013-01-27
getchar()和putchar()只能读入,输出一个字,你的for语句只有表达式2,也就是只给了循环条件,没有给出循环终止条件,他就会一直循环,所以他会一直输出d
第3个回答  2013-01-27
你的程序有问题,for语句不是这么写的追问

程序没有任何的问题,你可以编译运行,这只是for语句的例外一种表达形式而已

相似回答