为什么我用C语言读入的文件是乱码流?
#include<stdio.h>#include<string.h>#include<stdlib.h>typedefstructLink{intnumber;char...
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct Link {int number; char name[10]; char sex[4]; int Chinese; int English; int Math; float average; struct Link*next; }Student; void LoadStudent() { int flag=1; char FileName[20]; Student*p; FILE*fp; printf("Please input file path:"); scanf("%s",FileName); if((fp=fopen(FileName,"r+"))!=NULL) { fscanf(fp,"Number\tName\tSex\tChinese\tEnglish\tMath\tAverage\n"); printf("Number\tName\tSex\tChinese\tEnglish\tMath\tAverage\n"); while(flag) { p=(Student*)malloc(sizeof(Student)); fscanf(fp,"%d%s%s%d%d%d%f",&p->number,p->name,p->sex,&p->Chinese,&p->English,&p->Math,&p->average); if(p->number==NULL) flag=0; else { printf("%d\t%s\t%s\t%d\t%d\t%d\t%0.2f\t\n",p->number,p->name,p->sex,p->Chinese,p->English,p->Math,p->average); flag=1; } } } else printf("Load failed!"); fclose(fp); } void main() { LoadStudent(); }
展开
展开全部
p=(Student*)malloc(sizeof(Student));
fscanf(fp,"%d%s%s%d%d%d%f",&p->number,p->name,p->sex,&p->Chinese,&p->English,&p->Math,&p->average);
你这个
结构体
没有赋值也没有memset一下。写到文件中应该是
乱码
。先清空一下结构体,再赋值试试。记得malloc完,一定要free!
fscanf(fp,"%d%s%s%d%d%d%f",&p->number,p->name,p->sex,&p->Chinese,&p->English,&p->Math,&p->average);
你这个
结构体
没有赋值也没有memset一下。写到文件中应该是
乱码
。先清空一下结构体,再赋值试试。记得malloc完,一定要free!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询