| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
Reworld,下班在家制作游戏,1500万奖金等你拿千里之行 始于足下
共有 209 人关注过本帖
标题:fwrite写入数据地址对不上
只看楼主 加入收藏
domore
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2019-7-25
结帖率:60%
  问题点数:0  回复次数:4   
fwrite写入数据地址对不上
#include<stdio.h>
#include<stdio.h>        
#define SIZE 10
struct Student_type        //定义全局结构体变组stud,包含10个学生数据
    {
    char name[10];
    int num;
    int age;
    char addr[15];
    }stud[SIZE];
FILE *fp;
void save()    //定义save函数,向文件输出SIZE个学生的数据
    {
    //FILE *fp;原来是在这一行的,为了在main函数中也能输出fp,我把它声明为了全局变量
    int i;
    if((fp=fopen("stu.dat","wb"))==NULL)
        {
        printf("can not open file\n");
        return ;
        }
    printf("before:\nfp addr:%d, stud addr:%d,\nsize of a member:%d\n",fp,stud,sizeof(struct Student_type));    //我自己加的
    for(i=0;i<SIZE;i++)
        if(fwrite(&stud[i],sizeof(struct Student_type),1,fp)!=1)
            printf("file write error");
            return ;
    fclose(fp);
    }
int main()
    {
    int i;
    printf("please enter data of students:\n");
    for(i=0;i<SIZE;i++)
        scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
    save();
    printf("now:\nfp addr:%d, stud addr:%d,\nsize of a member:%d\n",fp,stud,sizeof(struct Student_type));        //我自己加的
    return 0;
    }

[此贴子已经被作者于2019-7-30 06:10编辑过]

附件: 您没有浏览附件的权限,请 登录注册
搜索更多相关主题的帖子: SIZE struct int addr printf 
2019-07-30 04:22
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:6708
专家分:29702
注 册:2014-5-20
  得分:0 
“对不上”是什么意思?具体说说
另:最好能提供代码测试
2019-07-30 05:12
domore
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2019-7-25
  得分:0 
对不上是指地址不等,我输出了fp和stud的地址,是不等的,而实际上应该是相等的
#include<stdio.h>
#define SIZE 10
struct Student_type
    {
    char name[10];
    int num;
    int age;
    char addr[15];
    }stud[SIZE];
void save()
    {
    FILE *fp;
    int i;
    if((fp=fopen("stu.dat","wb"))==NULL)
        {
        printf("can not open file\n");
        return ;
        }
    for(i=0;i<SIZE;i++)
        if(fwrite(&stud[i],sizeof(struct Student_type),1,fp)!=1)
            printf("file write error");
            return ;
    fclose(fp);
    }
int main()
    {
    int i;
    printf("please enter data of students:\n");
    for(i=0;i<SIZE;i++)
        scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
    save();
    return 0;
    }
2019-07-30 05:58
domore
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2019-7-25
  得分:0 
用我贴子里的代码  
我重新上传了  
2019-07-30 06:12
H_M
Rank: 2
等 级:论坛游民
威 望:1
帖 子:22
专家分:53
注 册:2019-2-7
  得分:0 
回复 3楼 domore
没有问题呀,我修改了一下代码,进行了调试。
修改代码为(红色处为修改):

#include<stdio.h>
#include<stdio.h>        
#define SIZE 1
struct Student_type        //定义全局结构体变组stud,包含10个学生数据
    {
    char name[10];
    int num;
    int age;
    char addr[15];
    }stud[SIZE];
FILE *fp;
void save()    //定义save函数,向文件输出SIZE个学生的数据
    {
    //FILE *fp;原来是在这一行的,为了在main函数中也能输出fp,我把它声明为了全局变量
    int i;
    if((fp=fopen("G:/text/stu.dat","wb"))==NULL)
        {
        printf("can not open file\n");
        return ;
        }
    printf("before:\nfp addr:%d, stud addr:%d,\nsize of a member:%d\n",fp,stud[1],sizeof(struct Student_type));    //我自己加的
    for(i=0;i<SIZE;i++)
        if(fwrite(&stud[i],sizeof(struct Student_type),1,fp)!=1)
            printf("file write error");
            return ;
    fclose(fp);
    }
int main()
    {
    int i;
    printf("please enter data of students:\n");
    for(i=0;i<SIZE;i++)
        scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
    save();
    printf("now:\nfp addr:%d, stud addr:%d,\nsize of a member:%d\n",fp,stud,sizeof(struct Student_type));        //我自己加的
    return 0;
    }



[此贴子已经被作者于2019-8-9 23:56编辑过]

附件: 您没有浏览附件的权限,请 登录注册
收到的鲜花
  • domore 于 2019-08-14 07:33 送鲜花  1朵  

无思路要敲代码,无思路不敲代码
2019-08-09 23:49
快速回复:fwrite写入数据地址对不上
数据加载中...
 
   



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

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