用fprintf()输出到文本文件时出现了一堆意义不明的数
解决时间 2021-02-19 12:08
- 提问者网友:欺烟
- 2021-02-18 23:54
//计算n个学生某学期的m门课程的平均成绩(保留两位小数)
#include
#include
float chin[8],math[8],eng[8],phy[8];//如果数组定义为int,会出现debug error
char name[8];
void aver()
{
double avg[8]={0};
int i;
for(i=0;i<7;i++)
{
avg[i]=(chin[i]+math[i]+eng[i]+phy[i])/4;
printf("%g\n",avg[i]);
}
FILE *fp;
fp=fopen("s7-3.txt","w");
if(fp==NULL)
{
printf("can not be open \n");
exit(0);
}
for(i=0;i<7;i++)
fprintf(fp,"%s %g %g %g %g %g\n",&name[i],chin[i],math[i],eng[i],phy[i],avg[i]);//这个输出的名字和几位数都很奇怪
fclose(fp);
}
int main()
{
int i;
FILE *fp;
fp=fopen("s7-3.txt","w");
if(fp==NULL)
{
printf("can not be open \n");
exit(0);
}
fprintf(fp,"li_ming 89 78 67 67\n");
fprintf(fp,"wang_hui 87 98 86 87\n");
fprintf(fp,"li_li 67 78 69 90\n");
fprintf(fp,"mao_dong 78 86 89 91\n");
fprintf(fp,"zhao_hong 89 90 92 89\n");
fprintf(fp,"zhao_xin 58 82 67 79\n");
fprintf(fp,"jiang_hua 90 92 94 89\n");
fprintf(fp,"liu_wan 78 76 79 78\n");
fclose(fp);
FILE *fp1;
fp1=fopen("s7-3.txt","r");
for(i=0;i<7;i++)
{
fscanf(fp,"%s%g%g%g%g",&name[i],&chin[i],&math[i],&eng[i],&phy[i]);
}
fclose(fp1);
aver();
return 0;
}
大家知道是什么原因嘛?是不是编译器的问题?我用的是vc6.0
最佳答案
- 五星知识达人网友:長槍戰八方
- 2021-02-19 00:29
name越界了。 你定义了一个name数组,去读8个名字,用法就错了。
应该定义name为二维数组。 其它的问题不大。
修改成这样试试。
#include
#include
float chin[8],math[8],eng[8],phy[8];//如果数组定义为int,会出现debug error
char name[8][30];//二维数组。
void aver()
{
float avg[8]={0};//既然用float了 就都用float好了。
int i;
for(i=0;i<7;i++)
{
avg[i]=(chin[i]+math[i]+eng[i]+phy[i])/4;
printf("%g\n",avg[i]);
}
FILE *fp;
fp=fopen("s7-3.txt","w");
if(fp==NULL)
{
printf("can not be open \n");
exit(0);
}
for(i=0;i<7;i++)
fprintf(fp,"%s %g %g %g %g %g\n",name[i],chin[i],math[i],eng[i],phy[i],avg[i]);//这个输出的名字和几位数都很奇怪
//改成二维数组,这里用name[i];
fclose(fp);
}
int main()
{
int i;
FILE *fp;
fp=fopen("s7-3.txt","w");
if(fp==NULL)
{
printf("can not be open \n");
exit(0);
}
fprintf(fp,"li_ming 89 78 67 67\n");
fprintf(fp,"wang_hui 87 98 86 87\n");
fprintf(fp,"li_li 67 78 69 90\n");
fprintf(fp,"mao_dong 78 86 89 91\n");
fprintf(fp,"zhao_hong 89 90 92 89\n");
fprintf(fp,"zhao_xin 58 82 67 79\n");
fprintf(fp,"jiang_hua 90 92 94 89\n");
fprintf(fp,"liu_wan 78 76 79 78\n");
fclose(fp);
FILE *fp1;
fp1=fopen("s7-3.txt","r");
for(i=0;i<7;i++)
{
fscanf(fp,"%s%g%g%g%g",name[i],&chin[i],&math[i],&eng[i],&phy[i]);//同样用name[i];
}
fclose(fp1);
aver();
return 0;
}
全部回答
不明白啊 = =!
我要举报
大家都在看
推荐资讯