C 如何读取从二进制文件中放入元素的数组?

C 如何读取从二进制文件中放入元素的数组?,c,arrays,file,binary,structure,C,Arrays,File,Binary,Structure,所以我所做的是 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ int osobna; char prezime[50+1]; char ime[50+1]; int dan,mj,god; char ulica[100+1]; int broj; char grad[30+1]; }glasac; int main() { FILE *fin

所以我所做的是

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
int osobna;
char prezime[50+1];
char ime[50+1];
int dan,mj,god;
char ulica[100+1];
int broj;
char grad[30+1];
}glasac;

int main()
{
    FILE *fin = fopen ("puk.dat","rb");
    fseek(fin,0,SEEK_END);
    int n = ftell(fin) / sizeof(glasac);
    rewind(fin);
    glasac *niz = (glasac*)calloc(sizeof(glasac),n);
    fread(&niz[0],sizeof(glasac),n,fin);
    fclose(fin);
    int i;
    for (i = 0; i < n; i++){
        fprintf(fin,"%d| %s| %s| %d.%d.%d| %s| %d| %s \n",niz[i]->osobna,niz[i]->prezime,niz[i]->ime,niz[i]->dan,niz[i]->mj,niz[i]->god,niz[i]->broj,niz[i]->grad);
    }
     return 0;
}
#包括
#包括
#包括
类型定义结构{
int osobna;
char-prezime[50+1];
字符输入法[50+1];
丹,乔丹,上帝;
charulica[100+1];
int broj;
字符梯度[30+1];
}格拉萨克;
int main()
{
文件*fin=fopen(“puk.dat”、“rb”);
fseek(fin,0,SEEK_END);
int n=固定资产(fin)/sizeof(glasac);
倒带(鳍);
glasac*niz=(glasac*)calloc(sizeof(glasac),n);
fread(和niz[0],sizeof(glasac),n,fin);
财务总监(财务);
int i;
对于(i=0;iosobna,niz[i]>prezime,niz[i]>ime,niz[i]>dan,niz[i]>mj,niz[i]>god,niz[i]>broj,niz[i]>grad);
}
返回0;
}
我知道代码的样式化很差,需要大量的润色,我为没有用英语命名变量而道歉。为什么这个打印不起作用,为什么我读不到我放在那个数组里的东西?
非常感谢和爱你们所有人

fprintf(fin…
-您正在将其打印回已关闭的同一文件中。(1)如果看不到编写该文件的代码,就无法知道其中包含什么。(2)如果不检查fopen()和fread()的返回值,等等,没有办法知道它们是否成功。我想我可以在控制台中看到打印?
printf
是。
fprintf(fin,
-no.OT:关于函数调用,例如:
FILE*fin=fopen(“puk.dat”,“rb”);fseek(fin,0,SEEK_END);int n=ftell(fin)/sizeof(glasac);
始终检查返回值(s) 以确保操作成功。否则,当出现问题时,程序将继续运行,而事情将很快变得“糟糕”