Bonjour
Quelle perspicacité. Et donc ? Tu es allé voir en ligne 85 ce qui se passait ? Pourtant t'as tout. T'as le nom de la fonction, la ligne incriminée, la position sur la ligne (54), le numéro de l'argument (le 11°), une coloration syntaxique sur le "%c" associé à "pers.der_op" et même tu peux comparer la syntaxe de cette saisie avec celle de la variable précédente "pers.nouv_sold" pour regarder pourquoi chez-elle tout va bien. Alors que te faut-il de plus ? Ah oui, un cerveau.
Allez, je t'aide:
fscanf(fic,"%s %s %d %d %d %d %d %d %c\n", pers.nom,pers.prenom, &pers.date.jour, &pers.date.mois, &pers.date.annee, &pers.numero, &pers.anc_sold, &pers.nouv_sold, ???pers.der_op).
Et la prochaine fois, tu postes le code sur le forum au lieu de nous faire aller le chercher.
PS: ici aussi il y a une erreur
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| //fonction ouvrir//
int ouvrir(FILE **fic){
*fic=fopen("data1.txt","a+");
printf("\n");
if (fic != NULL){
printf("Creation du fichier réussie\n");
}
else {
printf("Erreur de création du fichier\n");
exit(0);
}
return 0;
} |
Info: si tu appelles ta fonction de façon normale, alors "fic" ne sera
jamais null (autrement dit ce test ne fonctionnera jamais ; ou plutôt il sera toujours vrai ce qui est en fait la même chose).
Info2: on ne quitte jamais une fonction via
exit(). Tu es content que
fopen() ne le fasse pas te permettant ainsi de prendre une décision quand le fichier ne s'ouvre pas. Tu es content que
malloc() ne le fasse pas te permettant alors là aussi la même chose quand la mémoire n'est pas allouée. Ben comporte-toi de la même façon dans tes fonctions qui, quoi qu'il arrive, doivent se terminer et rendre la main à l'appelant.
Partager