在C中从.dat文件中读取变量

问题描述 投票:-1回答:1

在我必须进行分配的程序中,我们给了一个.dat文件,该文件的数据格式为:ID号[9 + 1字符],姓[50 + 1],名[50 + 1] ,出生日期[3个整数],街道[100 + 1个字符],街道编号[整数],城市[30 + 1个字符]。

应该从那个.dat文件创建一个包含所有数据的结构。我的问题是ID号读取错误,而其余部分却正确读取。另外,每次我编译代码时,ID号都会更改。

我试图从一个单独的函数和main中读取文件,并且将我的代码与我们的professor提供给我们的示例代码进行了比较,但是我找不到错误。我也尝试将ID类型更改为整数,但错误仍然存​​在。

结构:

typedef struct {
    char oib[9 + 1];
    char prezime[50 + 1];
    char ime[50 + 1];
    int dan;
    int mj;
    int god;
    char ulica[100 + 1];
    int ulbroj;
    char grad[30 + 1];
} Puk;

读取.dat文件的功能:

Puk* readPuk(int* n) {
    FILE* fin = fopen("puk.dat", "rb");

    fseek(fin, 0, SEEK_END);
    int br = ftell(fin) / sizeof(Puk);
    rewind(fin);

    Puk* rez = (Puk*)malloc(sizeof(Puk) * br);
    fread(&rez[0], sizeof(Puk), br, fin);

    *n = br;
    fclose(fin);
    return rez;
}

输出读取数据的位:

Puk* pukBin = readPuk(&nPuk);

for (i = 0; i < nPuk; i++) {
    fprintf(fout, "-----------\n");
    fprintf(fout, "OIB: %d\nPrezime: %s\nIme:%s\nDatum:%d.%d.%d\nUlica:%s\nBroj:%d\nGrad:%s\n", pukBin[i].oib, pukBin[i].prezime, pukBin[i].ime, pukBin[i].dan, pukBin[i].mj, pukBin[i].god, pukBin[i].ulica, pukBin[i].ulbroj, pukBin[i].grad);
}
c file structure
1个回答
0
投票

问题是输出到.txt文件时使用%d,而不是使用%s。

© www.soinside.com 2019 - 2024. All rights reserved.