请问关于getchar跟getch的有关问题
请教关于getchar跟getch的问题
为什么
这种语句会陷入死循环??而
按下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=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)。