Probleme avec fscanf .
Résolu
dragondort
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
dragondort Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
dragondort Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour, Je suis débutant en C, et je bloque sur un code.
Le voila:
Mon problème vient du fscanf, je ne sais pas comment faire pour passer a la ligne suivante de mon fichier menu.ini
Il s'agence comme suit :
Le voila:
#include <stdio.h> #include <stdlib.h> #define MAXLONGUEURLIGNEMENU 50 int AfficherMenu(void) { FILE* fichier = NULL; //char lignemenu[MAXLONGUEURLIGNEMENU]; int i; /* Les 4 Parametre */ int a1; int a2; char hotkey; char nomdeligne[MAXLONGUEURLIGNEMENU]; fichier = fopen("menu.ini", "r+"); if (fichier != NULL) { // On peut lire et écrire dans le fichier printf("Ouverture réussie !!! ^^ \n\n"); i=0; do{ fscanf(fichier, "%d;%d;%c;%s", &a1, &a2, &hotkey, nomdeligne); //fgets(lignemenu, MAXLONGUEURLIGNEMENU, fichier); printf("Nombre 1 : %d\nNombre 2 : %d\nHotkey : %c\nNom de la ligne : %s\n\n", a1, a2, hotkey, nomdeligne); i++; }while(i<3); fclose(fichier); } else { // On affiche un message d'erreur si on veut printf("Impossible d'ouvrir le fichier test.txt"); } return 0; }
Mon problème vient du fscanf, je ne sais pas comment faire pour passer a la ligne suivante de mon fichier menu.ini
Il s'agence comme suit :
1;0;N;[N]ouveau Fichier; 1;1;O;[O]uvrir; 1;2;Q;[Q]uitter; 2;0;C;Fichier [C]; 2;1;T;Fichier [T]exte;
5 réponses
essaye en rajoutant le ";" de fin de ligne
fscanf(fichier, "%d;%d;%c;%s;", &a1, &a2, &hotkey, nomdeligne);
Salut,
c'est à cause de dernier champ qui contient d'espaces, donc fscanf lit que la 1ère chaine de dernier champ
menu.ini
le code
c'est à cause de dernier champ qui contient d'espaces, donc fscanf lit que la 1ère chaine de dernier champ
menu.ini
1;0;N;[N]ouveauFichier; 1;1;O;[O]uvrir; 1;2;Q;[Q]uitter; 2;0;C;Fichier[C]; 2;1;T;Fichier[T]exte;
le code
#include <stdio.h> #include <stdlib.h> #define MAXLONGUEURLIGNEMENU 50 #include <stdio.h> #include <stdlib.h> #define MAXLONGUEURLIGNEMENU 50 int AfficherMenu (void) { FILE *fichier = NULL; int i; int a1; int a2; char hotkey; char nomdeligne[MAXLONGUEURLIGNEMENU]; fichier = fopen ("menu.ini", "r+"); if (fichier == NULL){ printf ("Impossible d'ouvrir le fichier test.txt"); return -1; } printf ("Ouverture réussie !!! ^^ \n\n"); while( fscanf (fichier, "%d;%d;%c;%s", &a1, &a2, &hotkey, nomdeligne) == 4) printf("Nombre 1 : %d\nNombre 2 : %d\nHotkey : %c\nNom de la ligne : %s\n\n", a1, a2, hotkey, nomdeligne); fclose (fichier); return 0; } int main () { AfficherMenu (); return 0; }
Sinon, sur ton fichier d'origine avec espaces
tu peux faire
1;0;N;[N]ouveau Fichier; 1;1;O;[O]uvrir; 1;2;Q;[Q]uitter; 2;0;C;Fichier [C]; 2;1;T;Fichier [T]exte;
tu peux faire
#include <stdio.h> #include <stdlib.h> #define MAXLONGUEURLIGNEMENU 50 #include <stdio.h> #include <stdlib.h> #define MAXLONGUEURLIGNEMENU 50 int AfficherMenu (void) { FILE *fichier = NULL; int i; int a1; int a2; char hotkey; char nomdeligne[MAXLONGUEURLIGNEMENU]; fichier = fopen ("menu.ini", "r+"); if (fichier == NULL){ printf ("Impossible d'ouvrir le fichier test.txt"); return -1; } printf ("Ouverture réussie !!! ^^ \n\n"); while( fscanf (fichier, "%d;%d;%c;", &a1, &a2, &hotkey)==3 && fgets(nomdeligne,50,fichier)!=NULL) printf("Nombre 1 : %d\nNombre 2 : %d\nHotkey : %c\nNom de la ligne : %s\n\n", a1, a2, hotkey, nomdeligne); fclose (fichier); return 0; } int main () { AfficherMenu (); return 0; }
Merci a tous.
Mon problème est résolu, mais pas totalement.
Je peut continuer mon programme, mais je ne sais toujours pas comment faire pour faire passer a la ligne suivante dans un fichier texte, sans utiliser fgets.
Donc, si quelqu'un connais la réponse, il peut toujours la poster.
Encore Merci
Mon problème est résolu, mais pas totalement.
Je peut continuer mon programme, mais je ne sais toujours pas comment faire pour faire passer a la ligne suivante dans un fichier texte, sans utiliser fgets.
Donc, si quelqu'un connais la réponse, il peut toujours la poster.
Encore Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Effectivement, ça aurais pu jouer, mais ça ne fonctionne quand même pas.
Toujours un problème pour que le fscanf passe a la ligne suivante de mon fichier.