第1个回答 2012-07-16
int load() \\ 返回值为int,名为load的函数。
{
FILE *fp; \\定义FILE类型的变量 fp( FILE类型是用于文件操作的)。
int i;\\定义int变量 i, int是整形。
if((fp=fopen("results.txt","rb"))==NULL)\\fp打开(fopen)当前EXE路径下,名为"results.txt"的文件,打开方式为2进制只读,如果没有这个文件,会返回空则进入这个if语句。
{
printf("文件打开错误");\\输出文件打开错误
return 0;\\退出函数,返回值为0
}
for(i=0;!feof(fp);i++) \\下面for循环里有一个文件读入的操作,如果feof(fp)返回是否读到文件末尾,如果没到就一直读,for循环不用我讲吧。
fread(&kec[i],sizeof(struct kecheng),1,fp);\\读sizeof(struct kecheng)返回结构体kecheng在内存中的大小,由文件中 读入sizeof(struct kecheng)大小的2进制文件到kec[i]里;
fclose(fp);\\关闭文件流
return(i-1);\\返回i值,退出函数。。
}
第2个回答 2012-07-16
fp指向一个文件结构。
如果打开fp指向的文件不存在,
输出“文件打开错误,结束程序,返回0;
然后for循环,直到fp遇到结束符EOF为止,
{读取文件:第一个形参是数据接受地址(这里是接收到kec数组里),第二个形参是文件大小,第三个形参是元素个数,第四个形参是文件指针fp。}
关闭数据流,并释放fp。
返回i-1 //没想通为什么返回i-1,而不是i ,如果前面for(...;...;++i),然后后面返回i-1才对。
第3个回答 2012-07-16
int load()
{
FILE *fp; //声明一个文件指针
int i;
if((fp=fopen("results.txt","rb"))==NULL) //以读方式打开一个二进制文件
{
printf("文件打开错误"); //如果打开失败则报错 退出程序
return 0;
}
for(i=0;!feof(fp);i++) //以结构体形式循环读出文件内容
fread(&kec[i],sizeof(struct kecheng),1,fp); //按照sizeof(struct kecheng)大小单位读取文件
fclose(fp); //关闭文件指针
return(i-1); //返回值
}本回答被提问者和网友采纳
第4个回答 2012-07-16
int load()
{
FILE *fp;// 定义一个指针,指向文件内容
int i;
if((fp=fopen("results.txt","rb"))==NULL)// 如果fopen返回的是空指针,说明打开文件函数出错了
{
printf("文件打开错误");
return 0;
}
for(i=0;!feof(fp);i++) // 看指针每次加1,来读取文件内容,直到feof(fp)函数判断已经到了文件末尾
fread(&kec[i],sizeof(struct kecheng),1,fp);// 把当前指针指向的文件内容,读取到KEC这个数组中
fclose(fp); //关闭文件
return(i-1); //返回的是文件长度
}