关于EOF的输入,为什么要输入两个?该如何解决

关于EOF的输入,为什么要输入两个?
[code=C/C++][/code]
#include<stdio.h>
#include<stdlib.h>
#define form "%d\n"
void main()
{
char str[300][100];
int i=0;
while(scanf("%s",str[i++])!=-1)
{
printf("a\n");
};//"i" is the number of lines



}
这个我要输入两个^Z在能结束输入,但是我在输入第一个的时候while里面的printf就已经不输出了,然后输入第二个就进行下面的代码。。。。
不理解。。。。。。

------解决方案--------------------
好像我这没有遇到这个问题嘛。你是什么编译器?
------解决方案--------------------
你是用vc6.0吧,这个编译器有些问题,你用gcc或者vs应该都可以。。我上网查的,不是人的问题,是vc6.0的问题。。这个就没有什么正确理论答案