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

请教关于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)。