帮忙看下这个程序为什么是死循环!!

来源:百度知道 编辑:UC知道 时间:2024/06/24 10:54:54
#include <stdio.h>
#include<string.h>
#include<iostream.h>
struct school_type
{
int num[8];
char name[40];
char province[10];
char addr[50];
char mail[6];
char tel[12];
}stud[300];
void main()
{
int i;
FILE *fp;
if((fp=fopen("d:\\test3.dat","r"))==NULL)
{
printf("no\n");
}
for(i=0;i<300;i++)
{

fread(&stud[i],sizeof(struct school_type),1,fp);
}
fclose(fp);

for(i=0;i<300;i++)
cout<<stud[i].num<<stud[i].name<<stud[i].province<<stud[i].addr<<stud[i].tel;
//cout<<endl;
//printf("%d,%c,%c,%c,%c,%c\n",stud[i].num,stud[i].name,stud[i].province,stud[i].addr,stud[i].tel);
}
文件有三百行,就是循环的结果就是无限刷出输出结果,不知道为什么,请高手再帮我看看,谢谢!

可能是你那个文件没有三百行,结果程序一直在等待读取数据。读取时循环改为while(!feof(fp)) 注意控制i自加,输出时也改一下就ok了。循环条件的意思是 fp没有结束