关于c语言文件读写问题

图片说明

 #include<stdio.h>
#include<string.h>
int main()
{char a[20][20]={0},*p[20],*temp;
int i=0,j,k;
FILE *fp=fopen("11.25","r");
while(fscanf(fp,"%s",a[i++])!=EFO);
fclose(fp);
for(j=0;j<i;j++)
p[j]=&a[j][0];
for(j=0;j<i;j++)
for(k=j+1;k<i;k++)
if(strcmp(p[j],p[k])>0) temp=p[j],p[j]=p[k],p[k]=temp;
for(k=0;k<i;k++)
puts(p[k]);
}

请问我的代码为什么无法运行出来结果 应该咋改?

楼上的正解,EOF即end of file, 文件结尾的意思,宏值就是-1.

EFO
->
EOF