标题:将文件内容读写到结构体中问题
只看楼主
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484480-1-1.html




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

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