| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2800 人关注过本帖
标题:将文件内容读写到结构体中问题
只看楼主 加入收藏
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
结帖率:50%
收藏
 问题点数:0 回复次数:10 
将文件内容读写到结构体中问题
程序代码:
int browse_stu_xinxi()
{
    char buf[1024];
    FILE *fp;
    //char *str123;
    int i = 0;
    int n= 0;
    memset(buf, 0x00, sizeof(buf));
    fp = fopen("F:\stuinfo.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开错误\n");
        exit(0);
    }
    //printf("%s",students[i].address);
    while (fgets(buf, 1024, fp))
    {    
        //n = strlen(buf);
        //fseek(fp, n + 1, SEEK_SET);
        printf("%s\n", buf);
        /* 思考 用strtok
        str = strtok(buf, "\t");
        while (str!=NULL)
        {
        students[i].stu_no = str;
        str = strtok(NULL, "\t");
        }
        */
        //有问题,运行就有问题,还有思考,在已经有文件内容继续添加数据。
        printf("这是第%d条数据\n", i);
        fscanf(fp, "%s    %s    %s    %s    %s    %s    %s    %s", &students[i].stu_no, &students[i].name, &students[i].age, &students[i].sex, &students[i].birth_date, &students[i].address,&students[i].phone, &students[i].email);
        printf("%s,%s,%s,%s,%s,%s,%s,%s,%d\n", students[i].stu_no, students[i].name, students[i].age, students[i].sex, students[i].birth_date, students[i].phone, students[i].address, students[i].email,i);
        i++;
        memset(buf, 0x00, sizeof(buf));

    }
    /*
    char buf[1024];
    scanf("%s",buf);
    printf("%d\n",sizeof());
    */
    fclose(fp);
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 文件 内容 str printf address 
2018-01-27 14:24
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
为什么会开始从第二条开始读,但是buf打印出来是第一条的内容
2018-01-27 14:25
nslookup65
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:24
专家分:192
注 册:2017-12-1
收藏
得分:0 
    while (fgets(buf, 1024, fp))

第一行读到了buf中
2018-01-27 15:00
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
回复 3楼 nslookup65
对呀,可是,存储到结构体中的确实第二条数据。
2018-01-27 15:33
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
提供数据文件和结构体才好测试
2018-01-27 16:13
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
回复 5楼 吹水佬
文件给了呀,结构体:struct stu
{
    char stu_no[16];
    char name[20];
    char age[2];
    char sex[2];
    char birth_date[20];
    char address[1024];
    char phone[16];
    char email[24];
}students[500];
2018-01-27 16:31
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
还有个文件 stuinfo.txt
2018-01-27 16:35
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
回复 7楼 吹水佬
不是有吗  在上面 一个txt的文件 没看到?
2018-01-27 17:19
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
回复 5楼 吹水佬
图片附件: 游客没有浏览图片的权限,请 登录注册
2018-01-27 17:20
nslookup65
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:24
专家分:192
注 册:2017-12-1
收藏
得分:0 
回复 4楼 Jeyyion_han
你用 fgets和fscanf交差读取行(fscanf读到的是偶数行),但只存储了fscanf的结果。
程序代码:
int browse_stu_xinxi()
{
    FILE *fp;
    int i = 0;
    int n = 0;
    int err = 1;
    
    fp = fopen("F:\\stuinfo.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开错误\n");
        exit(0);
    }

    while (err != EOF)
    {
        printf("这是第%d条数据\n", i + 1);
        err = fscanf(fp, "%s    %s    %s    %s    %s    %s    %s    %s",
                    &students[i].stu_no,
                    &students[i].name,
                    &students[i].age,
                    &students[i].sex,
                    &students[i].birth_date,
                    &students[i].address,
                    &students[i].phone,
                    &students[i].email);
        printf("%s,%s,%s,%s,%s,%s,%s,%s,%d\n", 
                students[i].stu_no,
                students[i].name,
                students[i].age,
                students[i].sex,
                students[i].birth_date,
                students[i].phone,
                students[i].address,
                students[i].email,
                i);
        i++;
    }

    fclose(fp);
    return 0;
}


[此贴子已经被作者于2018-1-27 18:07编辑过]

收到的鲜花
  • Jeyyion_han2018-01-30 21:20 送鲜花  3朵   附言:我很赞同
2018-01-27 18:03
快速回复:将文件内容读写到结构体中问题
数据加载中...
 
   



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

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