当前位置: 代码迷 >> C语言 >> getchar()问题
  详细解决方案

getchar()问题

热度:609   发布时间:2007-11-18 16:48:57.0
getchar()问题

为什么在while(1)中getchar()可以接受字符串?望高手指点。。
#include<stdio.h>
main()
{
char c;
while(1)
{
c=getchar();
printf("%c",c);
}

}

搜索更多相关的解决方案: getchar  

----------------解决方案--------------------------------------------------------
一直循环啊
----------------解决方案--------------------------------------------------------

在一次循环中就输出c,为什么没有截断字符串而将整串字符输出来?


----------------解决方案--------------------------------------------------------
其实是接收一个字符,只是有循环,所以一直在接收.
----------------解决方案--------------------------------------------------------
那输出的好像不是字符串吧,如果你在printf("%c\t",c);你看看是不是了!!你没有写格式符所以它输出来就像是个字符串一样!
----------------解决方案--------------------------------------------------------
以下是引用nuciewth在2007-11-18 17:13:00的发言:
其实是接收一个字符,只是有循环,所以一直在接收.

接收的时候循环起作用吗?程序是读取所有字符串然后一次输出的啊。那个printf为什么可以输出字符串,不是%c吗?迷惑中。
----------------解决方案--------------------------------------------------------

以下是引用learnerboy在2007-11-18 17:16:52的发言:
那输出的好像不是字符串吧,如果你在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编辑过]


----------------解决方案--------------------------------------------------------
以下是引用xDevil在2007-11-18 17:17:12的发言:

接收的时候循环起作用吗?程序是读取所有字符串然后一次输出的啊。那个printf为什么可以输出字符串,不是%c吗?迷惑中。

它是接收一个字符就立马输出,再更新再输出.


----------------解决方案--------------------------------------------------------
以下是引用xDevil在2007-11-18 16:48:57的发言:

为什么在while(1)中getchar()可以接受字符串?望高手指点。。
#include<stdio.h>
main()
{
char c;
while(1)
{
c=getchar();
printf("%c",c);
}

}



// 输出一行:因为输入后需要按回车确认输入。(比较简单的说法)//

系统把输入的字符放在缓冲区中,按回车就刷新缓冲区,
这个也有助于输入确认,方便修改输入。
标准IO函数都使用缓冲区,当缓冲区满或按回车时刷新缓冲区。


----------------解决方案--------------------------------------------------------
  相关解决方案