c语言用 fread 读取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);
}

有保存的函数吗,如果文件是以二进制模式打开保存的
那么就fread掉第一个count之后循环fread一个结构体到p[i]

如果是文本的话用fscanf()格式化读取到p[i]嘛追问

fscanf具体的话 怎么操作啊 怎么换行读取啊

追答

fscanf(fp,"%s %lf %lf %lf",………………);
空白符默认会跳过一个的,你就把他当scanf()用就好了

另外你需要以单纯的 "r"模式打开,而不是rb

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-29
你应该把每一行的四个值分别读取出来在存在结构体中。追问

fread可以用吗 具体怎么做

相似回答