字符串输入中的一个疑问,请求解惑!该怎么处理

字符串输入中的一个疑问,请求解惑!!

 [code=C/C++][/code]

#include <stdio.h>

#define LEN 10 

char *get_str( char *ptr ,int n );

int main(int argc, char *argv[])
{
char input[LEN] ;
char *chk;

chk = get_str(input ,LEN-1);
if(chk == NULL)
{
puts("Iput failed");
}
else 
puts(input);
puts("DONE!");

system(" pause");
 
return 0;
}



char *get_str(char *ptr ,int n)
{
int i ;
int ch ;
for (i = 0;i < n;i++)
{
ch = getchar();
if (ch != EOF)
ptr[i] = ch;
else
break;
}

if (ch == EOF)
return NULL ;
else 
{
ptr[i] = '\0';
return ptr;
}
}


程序设计较为简单:读取N个字符(包括空格、制表符和换行符),把结果存储在一个数组中。

执行(在C-free 5.0上编译):
LIU ^Z




^Z
Iput failed

请按任意键继续. . .

疑问是: 应该输入第一【ctrl+Z】时就该输出Input failed
为什么要回车后再输入【ctrl+Z】时才输出input failed ?

这段知识有点模糊,希望有人指点一下,不胜感激。
 

------解决方案--------------------
windows认为,如果缓冲中还有其它内容,ctrl+z不表示输入结束,仅代表当前行输入结束,只在单独一个ctrl+z的时候才表示输入结束