C语言文件读取乱码问题。

这是结构体structstudent{intsutdentID;charname[20];intChineseScore;intMathScore;intEnglishS... 这是结构体
struct student{ int sutdentID; char name[20]; int ChineseScore; int MathScore; int EnglishScore; float AVScroe; //平均成绩};

这是输出函数的代码
int line_number(FILE *a) // 统计文件行数{ int n; char ch; n = 0; while((ch = fgetc(a)) != EOF) { if(ch == '\n') n ++; } return n;}
void output_all() // 输出全部数据{ FILE *fp; int n; int i; struct student *p; if((fp = fopen("score.txt","r")) == NULL) //open the file { printf("打开文件失败\n"); exit(0); } n = line_number(fp); //检测文件行数 p = (struct student *)malloc(n *(sizeof(struct student))); if(p == NULL) printf("内存分配失败\n"); for(i=0;i<n;i++) { //fscanf(fp,"%d",&p[i].sutdentID); if(fscanf(fp,"%d%s%d%d%d%lf",&p[i].sutdentID,p[i].name,&p[i].ChineseScore,&p[i].MathScore,&p[i].EnglishScore,&p[i].AVScroe) == EOF) printf("error"); //p = p+1; printf("%d %s %d %d %d %f\n",p[i].sutdentID,p[i].name,p[i].ChineseScore,p[i].MathScore,p[i].EnglishScore,p[i].AVScroe); } fclose(fp); free(p);

文件读取后输出乱码。是什么问题。
展开
 我来答
xoaxa
2014-03-30 · TA获得超过8611个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3493万
展开全部
如果数据文件是用fprintf()函数写入的,则用fscanf()函数读出,要点是两个函数的写/读格式要一致。
如果数据文件是用fwrite()函数写入的,则用fread()函数读出,写/读单位是sizeof(struct student)。
Rankabc
2014-03-30 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1073万
展开全部
 n = line_number(fp);后面加一句 rewind(fp);
  fscanf(fp,"%d%s%d%d%d%lf\n" 加一个换行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式