C语言,怎么修改存到文件才不会是乱码?

来源:百度知道 编辑:UC知道 时间:2024/06/09 15:04:54
#include <stdio.h>
struct student
{
char num[10];
char name[8];
int score[3];
float ave;
}stu[5];
main()
{
int i,j,sum;
FILE *fp;
for(i=0;i<5;i++)
{
printf("\nInput score of student%d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
sum=0;
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].ave=sum/3.0;
}
fp=fopen("stud.dat","w");
for(i=0;i<5;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("File write error\n");
fclose(fp);
fp=fopen("stud.dat","r");
for(i=0;i<5;i++)
{
fread(&stu[i],sizeof(st

用fprintf(fp,"",,,);

你的要求应该用fprintf/fscanf实现:

//---------------------------------------------------------------------------
#include <stdio.h>
struct student
{
char num[10];
char name[8];
int score[3];
float ave;
}stu[5];
int main(void)
{
int i,j,sum;
FILE *fp;
for(i=0;i<5;i++)
{
printf("\nInput score of student%d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
sum=0;
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].ave=sum/3.0;
}
fp=fopen("c:\\stud.dat","w");
for(i=0;i<5;i++)
{/*注意这里*/
if(!fprintf(fp,"%s,%s,%d,%d,%d,%6.2f",stu[i].num,stu[i].name,stu[i].score[0],stu[i].scor