永发信息网

用fprintf()输出到文本文件时出现了一堆意义不明的数

答案:2  悬赏:60  手机版
解决时间 2021-02-19 12:08
//计算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
最佳答案
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;
}
全部回答
不明白啊 = =!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我的前女友跟他老公吵架说不想过了,经常来找
38度老窖金牌6年佳酿价格是多少?
一位游客在法国卢浮宫博物馆听讲解员指着一件
卓越牛肉店在什么地方啊,我要过去处理事情
ppt中设置字体楷体但显示为宋体,而在其他电
现在哪里还可以下载音乐啊?
冰箱上面可以放微波炉吗
佐客连锁便利店简约D007地址有知道的么?有点
1992年冬月初八生的女人2016年结婚吉日
男朋友说心累,为什么?
梦幻西游69怎么万血
一整段 MAC 地址申请要花多少钱?
麦果奶茶地址有知道的么?有点事想过去
鸡钟菌吃了有什么好处
成人本科考211的好还是普通大学
推荐资讯
在原始海洋中,有机小分子物质经长期积累并相
根据图片及英文提示,给每幅图写出一个适当的
【软水和硬水】如何区分软水和硬水?写出步骤
奔驰c200cd机怎么突然不响了
绍兴违章停车罚款多少
已知函数f(x)=(log2x-2)(log4x-12
伟伟商店地址有知道的么?有点事想过去
货币制度的构成要素包括( )。A.货币材料B.
大梁是哪个朝代
济南华天池和聚富圣会大家觉得哪个好些啊,我
去推啊面试会紧张吗?马上去参加推啊招聘了
亿阳暖通地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?