fwrite écrire un entier
Je suis en train d'écrire un mot dans un fichier à l'aide de cette fonction:
extern void write_int(FILE * out, int num) {
fwrite(&num,sizeof(int),1, out);
if(ferror(out)){
perror(__func__);
exit(EXIT_FAILURE);
}
}
Mais j'obtiens une erreur de segmentation à chaque fois qu'il essaie d'exécuter le fwrite. J'ai regardé la page de man pour fwrite(3) et je me sens comme je l'ai utilisé correctement, il ya quelque chose que je suis absent?
Quelle plate-forme/compilateur? Les problèmes d'alignement peut importe.
Quelle plate-forme/compilateur? Les problèmes d'alignement peut importe.<br> Pouvez-vous écrire quoi que ce soit d'autre dans le fichier correctement? Je soupçonne que votre fichier ne peut être ouvert correctement.
assurez-vous juste
quand je l'ai testé ce code, je n'y pensais pas et décidé d'écrire un fichier de test appelée "test", qui était également le nom de l'exécutable de mon programme de test, qui m'a donné une erreur de segmentation. >.< de Sorte que la fonction elle-même est très bien, assurez-vous juste ce que vous êtes de passage dans le elle est valide, N 1,1 et d'autres ont suggéré.
Quelle plate-forme/compilateur? Les problèmes d'alignement peut importe.<br> Pouvez-vous écrire quoi que ce soit d'autre dans le fichier correctement? Je soupçonne que votre fichier ne peut être ouvert correctement.
assurez-vous juste
out
n'est pas NULL
, le reste est ok.quand je l'ai testé ce code, je n'y pensais pas et décidé d'écrire un fichier de test appelée "test", qui était également le nom de l'exécutable de mon programme de test, qui m'a donné une erreur de segmentation. >.< de Sorte que la fonction elle-même est très bien, assurez-vous juste ce que vous êtes de passage dans le elle est valide, N 1,1 et d'autres ont suggéré.
OriginalL'auteur user149100 | 2010-04-23
Vous devez vous connecter pour publier un commentaire.
Essayez plutôt ceci:
Et pourquoi a votre fonction d'origine
extern
?lol les effets psychiques et de débogage
Si votre
FILE*
estNULL
, qui signifie généralement que vous avez oublié de l'ouvrir ou de votre échec de l'ouverture. Voir la page de man pourfopen
(sans doute que ce que vous utilisez).C'est qu'indépendamment de la plateforme? Je suis en train de parler endianity questions.
OriginalL'auteur tylerl
Est le descripteur de fichier valide? Avez-vous fopen() avec "w"? fwrite() erreur de segmentation si elle ne l'est pas.
La fonction elle-même n'a vraiment rien, donc c'est évidemment le fwrite appel qui est le problème. Examiner les arguments.
OriginalL'auteur Paul Richter
out
ne contient pas l'adresse du fichier, il contient l'adresse du pointeur de fichier de votre passage dans la main. Ce prototype de fonction devrait être comme:De cette façon, vous devez faire un double pointeur vers le pointeur dans la main, qui est ensuite pointant vers le fichier.
OriginalL'auteur Najeeb Uddin