c语言一行程序麻烦逐行解释一下

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);
fclose(fp);
return(i-1);
}

int load()
{
/*声明一个文件句柄*/

FILE *fp;
int i;
/*以二进制只读形式打开文件results.txt,并把函数返回的文件句柄赋值给fp,如果
*fp为NULL,则文件打开失败,打印错误信息,并退出程序。
*/
if((fp=fopen("results.txt","rb"))==NULL)
{
printf("文件打开错误");
return 0;
}

/*否则,循环读文件。文件中存放的是kecheng结构体的数据,每次循环读取1个kecheng结 *构体数据,并放在数据kec中,直到到达文件结尾。
*/

for(i=0;!feof(fp);i++)
fread(&kec[i],sizeof(struct kecheng),1,fp);
/*关闭文件句柄*/

fclose(fp);
/*返回文件中课程数据的个数*/

return(i-1);
}
温馨提示:答案为网友推荐,仅供参考
第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); //返回的是文件长度
}
相似回答