照着C程序设计语言打出来的,但是打完后运行报错,这是怎么回事

include

int main ()
{
long nc;
while (getchar()!=EOF)
++nc;
printf("%ld\n",nc);/*统计输入字符,有错误*/
return 0;
}
就是这一段,在vc6.0上面运行时候输入字符回车就是在不断换行,但是在vs2012运行输入回车后就报错,图片说明
请问是怎么回事,求详细说明

ctrl + z=eof

另外,你这nc没有初始化

在windows下,结束符是crtl z

nc是局部变量,不初始化,会是一个随机值