J'ai un fichier d'exemple ci-dessous où je lis le binaire dans la structure et j'imprime la longueur de la chaîne qui est stockée dans la structure. Mais je reçois un défaut de segmentation sous-jacent lorsque j'essaie d'imprimer la chaîne complète. Je ne pouvais pas trouver la raison pour cela.Lecture d'un fichier binaire dans une variable de structure donnant une erreur de segment
#include <stdio.h>
#include <stdlib.h>
struct sample {
unsigned int m;
unsigned int v;
unsigned int s[128];
int t_length;
char *t;
};
int main()
{
int i=0;
unsigned int t_len=0;
FILE *fp;
struct sample sam;
fp =fopen("sample.bin", "rb");
if (fp==NULL) {
printf("File not created\n");
return -1;
}
fread(&sam, sizeof(sam), 1, fp);
printf("t_length is %d\n", sam.t_length);
t_len=sam.t_length;
sam.t=(char *)malloc(sizeof(char) * t_len);
fseek(fp,0,SEEK_SET);
fread(&sam, sizeof(sam)+t_len, 1, fp);
printf("t_length is %d\n", t_len);
printf("%s\n", sam.t);
fclose(fp);
free(sam.t);
return 0;
}
Vous présentez également le programme qui a créé le fichier binaire. – BLUEPIXY
@BLUEPIXY Désolé je ne peux pas le donner – arceus
Pourquoi avez-vous ajouté le tag C++? Est-ce que vous programmez en C ou en C++? Ce sont deux langues très différentes, alors s'il vous plaît éditez votre question pour enlever la balise de langue qui n'est pas pertinente (probablement la balise C++, puisque votre programme est un pur programme C). –