注册 登录
编程论坛 C语言论坛

运行不提示错误,为何读取不到文件内容,fread 函数,求指导

juele 发布于 2020-03-16 20:45, 1514 次点击
int Fetch()
     {
    int i,a=0;
    FILE *fp;
    if((fp=fopen("jilu.txt","rb"))==NULL)
    {
        printf("无法打开文件!");
        return -1;
    }
    while(!feof(fp))
    {
        if(fread(&Message[a],sizeof(struct records),1,fp)==1)
            a++;
    }
    fclose(fp);
6 回复
#2
juele2020-03-16 20:49
后续代码
if(a==0)
    {
        printf("文件中暂无储存包裹的信息!");
    }
    else
    {
        printf("包裹编码 寄件人姓名 收件人姓名 收件人联系方式 收件人所在省份 收件人详细住址        包裹重量 负责人姓名\n");
        for(i=0;i<a;i++)
            printf("%-4s   %-6s    %-6s    %-6.0f     %6s        %d\n",Message[a].consumer,Message[a].classification,Message[a].commodity,Message[a].money,Message[a].cause,Message[a].date);
    }
    return a;
     }
#3
forever742020-03-16 20:50
怎么证明读取不到?
#4
juele2020-03-16 20:54
                          0                        0
就出现两个零 太难了求助
#5
forever742020-03-16 20:59
说点有用的呗,
数据文件打开,截图
运行结果,截图
#6
forever742020-03-16 21:00
要是你的文件里面本来就俩零那就不是读不出来的问题
#7
吹水佬2020-03-16 21:48
问题和代码不完整
猜想精简一下
只有本站会员才能查看附件,请 登录

#include <stdio.h>

struct records
{
    char consumer[4];
    char classification[6];
} Message[100];

int Fetch()
{
    int i,a=0;
    FILE *fp;
    if((fp=fopen("jilu.txt","rb"))==NULL)
    {
        printf("无法打开文件!");
        return -1;
    }
    for (a=0; fread(&Message[a],sizeof(struct records),1,fp)==1; ++a);
    fclose(fp);
    for(i=0; i<a; i++)
        printf("%-4s  %-6s\n",Message[i].consumer,Message[i].classification);
    return a;
}

int main(void)
{
    struct records msg[3] = {"aaa","AAA",
        "bbb","BBB",
        "ccc","CCC"
    };
    FILE *fp;
    if((fp=fopen("jilu.txt","wb"))==NULL)
        return -1;
    fwrite(msg, sizeof(struct records), 3, fp);
    fclose(fp);

    printf("%d\n",Fetch());
    return 0;
}
1