首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问关于getchar跟getch的有关问题

2012-04-24 
请教关于getchar跟getch的问题为什么C/C++ codewhile((chgetchar())!EOF){continue}这种语句会陷入死循

请教关于getchar跟getch的问题
为什么

C/C++ code
while((ch=getchar())!=EOF)    {                         continue;         }

这种语句会陷入死循环??而
C/C++ code
while((ch=getch())!=EOF)    {                              putchar(ch);                              }

按下enter键之后,屏幕中的输出并没有换行,而是从第一行从新开始,这又是为什么??希望高手能解答一下,谢谢

[解决办法]
ch是int类型。如果是char,请改正
还有,换行是 '\r' '\n'.
所以改为 
while((ch=getch())!=EOF)
{
if(ch=='\n')
putchar('\r');
putchar(ch);
}


[解决办法]
第一个不会陷入死循环,用户可以通过按下终止键的方式使getchar获取到EOF字符,从而退出循环。

第二个的原因是因为Windows下的回车仅仅是回车,没有换行功能。如果你想要实现换行,得自己添加代码。
C/C++ code
    while((ch=getch())!=EOF)    {        if (ch=='\r')            putchar('\n');        putchar(ch);    }
[解决办法]
引用……

C/C++ code
3.在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n)  1)windows平台下ENTER键会产生两个转义字符 \r\n,因此getch返回13(\r)。  2)unix、 linux系统中ENTER键只产生 \n ,因此getch返回10(\n)。  3)MAC OS中ENTER键将产生 \r ,因此getch返回13(\r)。 

热点排行