| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1349 人关注过本帖
标题:C语言二进制文件读写问题,求高手赐教!
取消只看楼主 加入收藏
陪你看雪ly
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-2-16
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
C语言二进制文件读写问题,求高手赐教!
只要进行两次输入,然后再输出数据。就会出错,不知怎么回事。。。
void input_date()
{
FILE *fp, *frecord_date;
char filename[20];
int i, j;
float sum;

    printf("请输入新建文件名:");
    gets(filename);

if((fp=fopen(filename,"wb"))==NULL)
{
printf("无法打开文件!");
exit(0);
}

if((frecord_date=fopen("record_date.txt","r+"))==NULL)
{
printf("无法打开文件!");
exit(0);
}
fscanf(frecord_date,"%d",&date_sum);
fclose(frecord_date);

fseek(fp,0,SEEK_END);//把文件指针调到最后,再写数据
printf("请输入学生数据,以学号0结束\n");
stu[0].num=1;//保证输入开始

for(i=date_sum; ; i++)
{
    printf("NO. ");
    scanf("%ld",&stu[i].num);
    getchar();

    if(stu[i].num==0)//退出输入
        break;

    printf("name: ");
    gets(stu[i].name);

    sum=0;
    for(j=0; j<3; j++)
    {
        printf("第%d科:",j+1);
        scanf("%f",&stu[i].score[j]);
        sum=sum+stu[i].score[j];
    }
    getchar();

    stu[i].aver=sum/3;

    if(fwrite(&stu[i], sizeof(struct student), 1, fp)!=1) //二进制读写
    {
        printf("error!");
        fclose(fp);
    }


}
printf("执行完毕!");
fclose(fp);


date_sum=i; //记录数据总数

if((frecord_date=fopen("record_date.txt","w"))==NULL)
{
printf("无法打开文件!");
exit(0);
}

fprintf(frecord_date,"%d",date_sum);//记录数据

fclose(frecord_date);

}
///////////////////////////////////////
void output_date()
{
FILE *fp, *frecord_date;
char filename[20];
int i, j;

printf("请输入需要打开的文件名:");
gets(filename);

if((fp=fopen(filename,"rb"))==NULL)
{
printf("无法打开文件!");
exit(0);
}

if((frecord_date=fopen("record_date.txt","r"))==NULL) //打开记录数据数目的文件
{
printf("无法打开文件!");
exit(0);
}

fscanf(frecord_date,"%d",&date_sum);
printf("date_sum=%d\n",date_sum);

fseek(fp,0,SEEK_SET);

for(i=0; i<date_sum; i++)
{
    if(fread(&stu[i], sizeof(struct student), 1, fp)!=1)//读数据
    {
    printf("error!");
    fclose(fp);
    }

    printf("NO.%d\n",stu[i].num);
    printf("name:%-10s\n",stu[i].name);

for(j=0; j<3; j++)
{
    printf("第%d科: ",j+1);
    printf("%-5.2f\n",stu[i].score[j]);
}
    printf("平均分:%-5.2f\n",stu[i].aver);

    printf("\n");
}

printf("执行完毕!");
fclose(frecord_date);
fclose(fp);
搜索更多相关主题的帖子: led possible company 二进制 C语言 
2012-02-17 08:45
陪你看雪ly
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-2-16
收藏
得分:0 
回复 2楼 smallmoon521
我的是win7系统,弄不了单步调试,还有就是我还不懂栈。。。悲催啊
2012-02-17 11:51
陪你看雪ly
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-2-16
收藏
得分:0 
回复 4楼 smallmoon521
我是不懂栈啊,不会看,看不出来。。我懂的方法几乎都用了,实在没办法,所以找高手指导指导,,
2012-02-17 17:06
陪你看雪ly
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-2-16
收藏
得分:0 
回复 6楼 smallmoon521
我都无语,我调试不了,没什么作用。。。还有就是那个call stack一直都是灰色,用不了,汗。。。
2012-02-17 17:27
陪你看雪ly
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-2-16
收藏
得分:0 
回复 8楼 smallmoon521
还是你教我吧,我只是会一点点。。。加上我有两个调试功能用不了,我检查程序基本不用调试功能
2012-02-17 17:46
陪你看雪ly
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-2-16
收藏
得分:0 
回复 10楼 TonyDeng
是二进制的
2012-02-17 18:29
陪你看雪ly
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-2-16
收藏
得分:0 
问题已经解决,还是谢谢各位
2012-02-17 21:16
快速回复:C语言二进制文件读写问题,求高手赐教!
数据加载中...
 
   



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

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