Rebonjour à tous,
Je vous expose mes code et vous explique le problème après^^
Le main.c
Le main.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "anul_entrer.h" #include "main.h" #define NBR_JOUEUR 2 int main() { int i = 0; //variable d'execution pour les boucles char *Recherche [TAILLE_MAX] = {""}; S_InfoJoueur Info[NBR_JOUEUR+1]; //initialisation structure S_InfoJoueur FILE *DonneesJoueurs = NULL; //initialisation du pointeur sur le fichier DonneesJoueurs = fopen("DonneesJoueurs.save", "r+"); //ouverture du fichier en methode (lire et ecrire sans creation de fichier) if (DonneesJoueurs != NULL) { //verification de l ouverture du fichier printf("Ouverture fichier ... OK"); //ouverture fichier ok /*============================================================*/ /*====================Ecriture des données====================*/ for (i = 0; i < NBR_JOUEUR; i++) { //boucle qui permet l'insertion de données dans le fichier "DonneesJoueurs.txt" temps que le nbr de joueur n'est pas atteint printf("\n\n\t\t Joueur %d", i+1);//intro avec numero du joueur ("i+1" pour ne pas avoir de "Joueur 0") printf("\n\n Pseudo : ");//demande d'entrez l'info Pseudo correspondant a la struc S_InfoJoueur=> variable Pseudo. *Recherche = fgets(Info[i].Pseudo, TAILLE_MIN, stdin); //recuperation de l'info Pseudo fprintf(DonneesJoueurs, "%s", anul_entrer(*Recherche)); //ecrit les donnees receuilli dans le fichier text } //fin de la boucle for } else { printf("ECHEC ouverture fichier /!\\. Verifiez l'existance du dit fichier sur le disque !!!"); //echec ouverture fichier } // fin verif ouverture de fichier fclose(DonneesJoueurs); //fermeture du fichier return 0; }
le anul_entrer (source du problème je pense)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #ifndef MAIN #define MAIN #define TAILLE_MIN 100 #define TAILLE_MAX 1000 typedef struct InfoJoueur S_InfoJoueur; struct InfoJoueur { char Pseudo[TAILLE_MIN]; }; #endif
bon le anul_entrer.h ne contient que le prototype donc je vous l'épargne^^.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <stdio.h> #include <stdlib.h> #include <string.h> char anul_entrer (char *Recherche) { char Chaine; *strchr(Recherche, '\n'); if(Recherche != NULL) { Chaine = *strchr(Recherche, '\n') = '\0'; return Chaine; } else { return *Recherche; } }
Le problème :
Alors déjà, de temps en temps, la compilation m'indique : "main.c|33|warning: format argument is not a pointer (arg 3)|"
Ce qui correspond à la ligne :Sinon quand il me laisse exécuter le programme, et bien tout ce déroule comme il faut sauf que dans mon fichier texte "DonneesJoueur.save" tout ce que cela m'écrit c'est : (NULL)(NULL) au lieu des deux pseudo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fprintf(DonneesJoueurs, "%s", anul_entrer(*Recherche)); //écrit les données recueilli dans le fichier texte
En espérant avoir été clair ^^ need help :'(
EDIT :
J'ai tenté de modifier un peu mon "anul_entrer" :
Mais la sa plante tout de suite après la saisi du premier pseudo ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <stdio.h> #include <stdlib.h> #include <string.h> char anul_entrer (char *Recherche) { char *Chaine; *Chaine = *strchr(Recherche, '\n'); if(Chaine != NULL) { *Chaine = *strchr(Recherche, '\n') = '\0'; return *Chaine; } else { return *Recherche; } }
Partager