| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:【求助】文件写入有问题,请求帮助
只看楼主 加入收藏
风间小艺
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-5-20
收藏
 问题点数:0 回复次数:5 
【求助】文件写入有问题,请求帮助

#include <stdio.h>
#define N 5

struct info
{
int id;
char name[20];
float score[3];
float max;
float min;
}stu[N];

float high(float a[])
{
float max=0.0;
int i;
for(i=0;i<3;i++)
if(a[i]>max)
max=a[i];
return max;
}

float low(float a[])
{
float min;
int i;
min=a[0];
for(i=1;i<3;i++)
if(a[i]<min)
min=a[i];
return min;
}

int writefile()
{
FILE *fp;
int i;
if((fp=fopen("StudentScore.txt","w+"))==NULL)
return -1;
else
for(i=0;i<N;i++);
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f %.1f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].max,stu[i].min);
fclose(fp);
return 0;
}

void main()
{
int i,j;

for(i=0;i<N;i++)
{
printf("Please input the %d student information:\n",i+1);
while (1)
{
printf("student number<101~999>:");
scanf("%d",&stu[i].id);
getchar();
if(stu[i].id>100 && stu[i].id<1000)
break;
else
printf("The number is wrong.Please repeat now.\n");
}
printf("student name:");
gets(stu[i].name);
for(j=0;j<3;j++)
while(1)
{
printf("the %d subject score(0~100):",j+1);
scanf("%f",&stu[i].score[j]);
getchar();
if (stu[i].score[j]>=0.0 && stu[i].score[j]<=100.0)
break;
else
printf("The number is wrong.Please repeat now.\n");
}
}

printf("-------------------------------------------------------------------------\n");
for(i=0;i<N;i++)
{
printf("The %d student information:\n",i+1);
printf("\tstudent-no:%d\n",stu[i].id);
printf("\tstudent-name:%s\n",stu[i].name);
for(j=0;j<3;j++)
printf("\tthe subject %d score:%.1f\n",i+1,stu[i].score[j]);
stu[i].max=high(stu[i].score);
stu[i].min=low(stu[i].score);
printf("\n\tthe hightest score is %.1f\n",stu[i].max);
printf("\tthe lowest score is %.1f\n\n",stu[i].min);
}
if(writefile())
printf("The file successed......\n");
else
printf("The file unsuccessed......\n");
}

写文件的子程序好像有问题,运行的结果写不到文件里面,请高手帮忙看看
应该是把5条记录都写到文件里,怎么就写了一行0

搜索更多相关主题的帖子: 文件 请求 
2007-05-20 11:11
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
for(i=0;i<N;i++);

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-05-20 13:30
风间小艺
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-5-20
收藏
得分:0 

这句有什么问题呢?


2007-05-20 23:01
oujianqiang
Rank: 1
等 级:新手上路
帖 子:138
专家分:0
注 册:2006-5-16
收藏
得分:0 

当然有错误,看看这段代码
int writefile()
{
FILE *fp;
int i;
if((fp=fopen("StudentScore.txt","w+"))==NULL)
return -1;
else
for(i=0;i<N;i++);
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f %.1f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].max,stu[i].min);
fclose(fp);
return 0;
}

这个函数都没有write()写进文件,而且你返回的值是0,那么
if(writefile())
printf("The file successed......\n");
else
printf("The file unsuccessed......\n");
无论怎样都是打印else分支


2007-05-20 23:11
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
以下是引用风间小艺在2007-5-20 23:01:22的发言:

这句有什么问题呢?

for(i=0;i<N;i++);
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f %.1f\n",stu[i].id,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].max,stu[i].min);

看出来什么原因没有?


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-05-21 02:23
ludingo1211
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-5-28
收藏
得分:0 

云带来了风,不,是风带去了云。QQ群6438659 请你不要一时冲动,对c不感兴趣的,请不要加入。
2007-05-30 17:08
快速回复:【求助】文件写入有问题,请求帮助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027287 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved