为什么在while(1)中getchar()可以接受字符串?望高手指点。。
#include<stdio.h>
main()
{
char c;
while(1)
{
c=getchar();
printf("%c",c);
}
}
----------------解决方案--------------------------------------------------------
一直循环啊
----------------解决方案--------------------------------------------------------
在一次循环中就输出c,为什么没有截断字符串而将整串字符输出来?
----------------解决方案--------------------------------------------------------
其实是接收一个字符,只是有循环,所以一直在接收.
----------------解决方案--------------------------------------------------------
那输出的好像不是字符串吧,如果你在printf("%c\t",c);你看看是不是了!!你没有写格式符所以它输出来就像是个字符串一样!
----------------解决方案--------------------------------------------------------
其实是接收一个字符,只是有循环,所以一直在接收.
接收的时候循环起作用吗?程序是读取所有字符串然后一次输出的啊。那个printf为什么可以输出字符串,不是%c吗?迷惑中。
----------------解决方案--------------------------------------------------------
那输出的好像不是字符串吧,如果你在printf("%c\t",c);你看看是不是了!!你没有写格式符所以它输出来就像是个字符串一样!
明白了。
在第一次getchar()时,数据存入缓冲区中,然后输出一个字符。
继续循环,但缓冲区还有数据,然后继续输出字符,直到缓冲区中的数据输出完毕。
继续循环,可以getchar()了.
include<stdio.h>
main()
{
char c;
while(1)
{
c=getchar();
printf("#");//sign!
printf("%c",c);
}
}
[此贴子已经被作者于2007-11-18 17:38:45编辑过]
----------------解决方案--------------------------------------------------------
接收的时候循环起作用吗?程序是读取所有字符串然后一次输出的啊。那个printf为什么可以输出字符串,不是%c吗?迷惑中。
它是接收一个字符就立马输出,再更新再输出.
----------------解决方案--------------------------------------------------------
为什么在while(1)中getchar()可以接受字符串?望高手指点。。
#include<stdio.h>
main()
{
char c;
while(1)
{
c=getchar();
printf("%c",c);
}
}
// 输出一行:因为输入后需要按回车确认输入。(比较简单的说法)//
系统把输入的字符放在缓冲区中,按回车就刷新缓冲区,
这个也有助于输入确认,方便修改输入。
标准IO函数都使用缓冲区,当缓冲区满或按回车时刷新缓冲区。
----------------解决方案--------------------------------------------------------