运行的时候表头会有乱码并且第一条记录缺了一点点
我先用了fgets读了表头的内容,再用fscanf读记录 不知道为啥会出现这样的情况
还有最后出现了屯屯屯屯
求大神!!ORZ
第一次提问 有点不会粘代码(。。)
typedef struct student
{
char number[10];
char name[10];
int Chinese;
int Math;
int English;
int Sum;
struct student *next;
}student, *pStudent;
void display(student *p)
{
student *psr=p;
printf("number:%s , name=%s , Chinese: %d , Math: %d , English: %d, Sum: %d",psr->number,psr->name,psr->Chinese,psr->Math,psr->English,psr->Sum);
}
void consultrecord(student *studentrecord)
{
student *psr=studentrecord;
while(psr!=NULL)
{
display(psr);
}
}
int main()
{
char a[40];
char stsystem="F://datastructure//studentimformation.csv";
//readRecord(stsystem);
FILE *fpSystem=fopen(stsystem,"r");
FILE *ftest=fopen("F://datastructure//test.csv","w");
if(fpSystem==NULL)
{
printf("\nError: Cannot open the system file!");
}
else
{
printf("欢迎来到XX大学学生管理系统");
printf("\t\t\t\t\t\t\t\t-------------------------------------------------\n");
printf("\t\t\t\t\t\t\t\t+ 学生信息管理系统 +\n");
printf("\t\t\t\t\t\t\t\t-------------------------------------------------\n");
printf("\t\t\t\t\t\t\t\t\t\t **************\n");
printf("\t\t\t\t\t\t\t\t\t\t 1、添加学生信息\n");
printf("\t\t\t\t\t\t\t\t\t\t 2、浏览学生信息\n");
printf("\t\t\t\t\t\t\t\t\t\t 3、查询学生信息\n");
printf("\t\t\t\t\t\t\t\t\t\t 4、修改学生信息\n");
printf("\t\t\t\t\t\t\t\t\t\t 5、删除学生信息\n");
printf("\t\t\t\t\t\t\t\t\t\t 6、排列学生信息\n");
printf("\t\t\t\t\t\t\t\t\t\t 7、读取文件学生\n"); //从文件读取
printf("\t\t\t\t\t\t\t\t\t\t 8、保存到文件\n"); //保存到文件
printf("\t\t\t\t\t\t\t\t\t\t 9、退出系统\n");
student *studentrecord=(student *)malloc(sizeof(student));
student *pstudent=studentrecord;
char watse[40];
char str[]="number,name,Chinese,Math,English,sum";
fgets(watse,strlen(str)+1,fpSystem);
printf("%s",watse);
while(1)
{
if(fscanf(fpSystem,"%[^','],%[^','],%d,%d,%d,%d",pstudent->number,pstudent->name,&pstudent->Chinese,&pstudent->Math,&pstudent->English, &pstudent->Sum)==-1)
{
pstudent->next=NULL;
break;
}
fprintf(ftest,"%s,%s,%d,%d,%d,%d,%d\n",pstudent->number,pstudent->name,pstudent->Chinese,pstudent->Math,pstudent->English,pstudent->Sum);
printf("%s,%s,%d,%d,%d,%d\n",pstudent->number,pstudent->name,pstudent->Chinese,pstudent->Math,pstudent->English,pstudent->Sum);
pstudent->next=(student *)malloc(sizeof(student));
pstudent=pstudent->next;
}
fclose(fpSystem);
fclose(ftest);
int usercode;
scanf("%d",&usercode);
switch (usercode)
{
case 2: consultrecord(pstudent);
break;
}
}
return 0;
}
屯子的出现,说明了里面没有数据,而你又打印了一遍。。。
char stsystem[]="F://datastructure//studentimformation.csv";
//readRecord(stsystem);
FILE *fpSystem=fopen(stsystem,"r");
char watse[40];
char str[]="number,name,Chinese,Math,English,sum";
fgets(watse,strlen(str)+1,fpSystem);
printf("%s",watse);
// 看你的文件里面 是不是有乱码问题。。。