c语言用 fread 读取dat文件 ,大神来看看啊

typedefstructGrade{charnum[8];doubleordinary;doublemid;doublefinal;}Grade;//成绩的结构体dat... typedef struct Grade{
char num[8];
double ordinary;
double mid;
double final;
}Grade;//成绩的结构体
dat文件内容如下:
20
06030202 91 79.5 76
06030203 85 75 77
06030204 79 82 80.5
06030205 89 75 60
06030206 85 89 61
06030207 93 78 63
06030208 82 76 79
06030209 89 82 71.5
06030210 96 74 71
06030211 90 82 68
06030212 70 91 88
06030213 84 93 90
06030214 88 85 69
06030215 91 80 66
06030216 79 79 79
06030217 86 73 73
06030218 85 90 75
06030219 81 88 88
06030220 92 80 91.5
谁能帮我写个读取函数啊 ,或者帮我看看我这个函数哪里出错了。。
函数如下:
void Read_grade(Grade *p)
{
FILE *fp;
int n;
char filename[20];
fflush(stdin);
printf("请输入要导入的文件的路径:");
gets(filename);
fp=fopen(filename,"rb");
if(!fp)
{
printf("File can't open!");
exit(0);
}
fread(&n,4,1,fp);
fread(p,sizeof(Grade),1,fp);
printf("读取成功!\n");
fclose(fp);
}
展开
 我来答
GarfieldGCat
2012-10-29 · TA获得超过500个赞
知道小有建树答主
回答量:445
采纳率:92%
帮助的人:277万
展开全部
有保存的函数吗,如果文件是以二进制模式打开保存的
那么就fread掉第一个count之后循环fread一个结构体到p[i]

如果是文本的话用fscanf()格式化读取到p[i]嘛
追问
fscanf具体的话 怎么操作啊 怎么换行读取啊
追答
fscanf(fp,"%s %lf %lf %lf",………………);
空白符默认会跳过一个的,你就把他当scanf()用就好了

另外你需要以单纯的 "r"模式打开,而不是rb
希望村村民
2012-10-29 · TA获得超过1589个赞
知道小有建树答主
回答量:1187
采纳率:100%
帮助的人:957万
展开全部
你应该把每一行的四个值分别读取出来在存在结构体中。
追问
fread可以用吗 具体怎么做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式