[英]When I try to read structure from binary file I get (stack smashing detected)
我使用fwrite() function 和fread() function 將數據存儲在二進制文件中以從二進制文件中讀取結構,但我得到了
***檢測到堆棧粉碎***:終止中止(核心轉儲)
這是我的代碼:
#include <stdio.h>
# define N 3
typedef struct {
int age;
char nom[30];
char prenom[30];
}pers;
void remplir_bin_n(FILE *fi,int n) {
pers p;
int i;
for (i=0;i<n;i++){
printf("veillez entrez les information du personne n° %d\n", i + 1);
printf("\tAge: ");
scanf("%d", & p.age);
printf("\tNom: ");
while ((getchar()) != '\n');
scanf("%[^\n]", p.nom);
printf("\tPrenom: ");
while ((getchar()) != '\n');
scanf("%[^\n]", p.prenom);
fwrite(&p,3,sizeof(pers),fi);
}
fclose(fi);
}
void afficher_file_bin(FILE *f){
pers pi;
int i=1;
fread(&pi,3,sizeof(pers),f);
while(!feof(f)){
printf("Information du personne n° %d\n", i );
printf("\tL'age est : %d\n",pi.age);
printf("\tLe nom est : %s\n",pi.nom);
printf("\tLe prenom est : %s\n",pi.prenom);
fread(&pi,3,sizeof(pers),f);
i++;
}
fclose(f);
}
void main (){
FILE *f,*fi;
f=fopen("pers.dat","rb");
fi=fopen("pers.dat","wb");
remplir_bin_n(fi,N);
afficher_file_bin(f);
}
在 fread 和 fwrite 中,我使用 3 作為結構中的元素數量,我錯過的是年齡、nom 和pers
都在同一個結構中,所以我不得不在 fread 和 fwrite 中放入 1,所以我讀取了結構數據在一個變量中,一切正常,沒有錯誤。
雖然感謝您的回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.