Lire dans un fichier en C
Résolu
limbergh
Messages postés
658
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
j'ai un code qui demande à un utilisateur de rentrer des données (tout via des fonctions), elles sont ensuite transcrites dans un fichier (fonction ecrireFichier) mais je n'arrive pas à relire ce fichier (fonction lireFichier) dans la console et je ne vois pas ce que j'ai fait de mal...
voici mon code
Merci d'avance pour vos interventions
j'ai un code qui demande à un utilisateur de rentrer des données (tout via des fonctions), elles sont ensuite transcrites dans un fichier (fonction ecrireFichier) mais je n'arrive pas à relire ce fichier (fonction lireFichier) dans la console et je ne vois pas ce que j'ai fait de mal...
voici mon code
#include <stdio.h> #include <stdlib.h> #define M 50 void encode(); void afficheTout(); void modifie(); void afficheUn(); void ecrireFichier(); void lireFichier(); typedef struct Personne { char nom[M]; char prenom[M]; char loc[M]; int age; }Pers; Pers P[3]; FILE *fichier; int main() { int choix; do { printf("=======MENU=======\n"); printf("-1- encode \n"); printf("-2- affiche\n"); printf("-3- modifie\n"); printf("-4- affiche un\n"); printf("-5- ecrire dans fichier\n"); printf("-6- lire dans fichier\n"); printf("votre choix====>"); scanf("%d", &choix); switch (choix) { case 1 : encode(); break; case 2 : afficheTout(); break; case 3 : modifie(); break; case 4 : afficheUn(); break; case 5 : ecrireFichier(); break; case 6 : lireFichier(); break; case 0 : printf("Bye!!!"); } } while (choix!=0); return 0; } void encode() { int i; for (i=0;i<3;i++) { printf("nom : "); scanf("%s", P[i].nom); printf("prenom : "); scanf("%s", P[i].prenom); printf("localite : "); scanf("%s",P[i].loc); printf("age :"); scanf("%d", &P[i].age); } } void afficheTout() { int j; for (j=0;j<3;j++) printf("numero = %d\t nom : %s\t prenom : %s\t localite : %s\t age : %d\n",j+1 , P[j].nom, P[j].prenom, P[j].loc, P[j].age); } void modifie() { int j; for (j=0;j<3;j++) printf("numero : %d\tnom : %s\t prenom : %s\t localite : %s\t age : %d\n",j+1, P[j].nom, P[j].prenom, P[j].loc, P[j].age); int num = 0; printf("numero de la personne a modifier"); scanf("%d", &num); printf("nom a modifier: "); scanf("%s", P[num].nom); printf("prenom : "); scanf("%s", P[num].prenom); printf("localite : "); scanf("%s",P[num].loc); printf("age :"); scanf("%d", &P[num].age); } void afficheUn() { int num=0, j; printf("numero de la personne a afficher : "); scanf("%d", &num); for (j=1;j<4;j++) { if (num==j) printf("numero = %d\t nom : %s\t prenom : %s\t localite : %s\t age : %d\n",j+1 , P[j].nom, P[j].prenom, P[j].loc, P[j].age); } } void ecrireFichier() { int i; fichier=fopen("essai.txt", "w"); for (i=0;i<3;i++) fprintf(fichier, "numero = %d\t nom : %s\t prenom : %s\t localite : %s\t age : %d\n",i+1 , P[i].nom, P[i].prenom, P[i].loc, P[i].age); fflush(fichier); fclose(fichier); } void lireFichier() { int i; fichier=fopen("essai.txt", "r"); for (i=0;i<3;i++) fscanf(fichier, "numero = %d\t nom : %s\t prenom : %s\t localite : %s\t age : %d\n",&i+1 , P[i].nom, P[i].prenom, P[i].loc, &P[i].age); fflush(fichier); fclose(fichier); }
Merci d'avance pour vos interventions
A voir également:
- Lire dans un fichier en C
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
3 réponses
le fscanf:
fscanf(fichier, "numero = %d\t nom : %s\t prenom : %s\t localite : %s\t age : %d\n",&i+1 , P[i].nom, P[i].prenom, P[i].loc, &P[i].age);
tu dois juste mettre les indicateur de format (%s, %d...) pas autre chose comme numero prenom ou des conneries comme ca
fscanf(fichier, "numero = %d\t nom : %s\t prenom : %s\t localite : %s\t age : %d\n",&i+1 , P[i].nom, P[i].prenom, P[i].loc, &P[i].age);
tu dois juste mettre les indicateur de format (%s, %d...) pas autre chose comme numero prenom ou des conneries comme ca
Re,
Tu le lis mais il n'y a rien qui s'affiche.
C'est normal, tu as oublié printf
Essaie
Tu le lis mais il n'y a rien qui s'affiche.
C'est normal, tu as oublié printf
Essaie
void lireFichier(){ int i; fichier=fopen("essai.txt", "r"); for (i=0;i<3;i++){ fscanf(fichier, "%s%s%s%d", P[i].nom, P[i].prenom, P[i].loc, &P[i].age); printf("numero = %d\t nom : %s\t prenom : %s\t localite : %s\t age : %d\n", i+1 , P[i].nom, P[i].prenom, P[i].loc, P[i].age); fclose(fichier); } }
Salut,
j'ai juste changer la fermeture du fichier de place car cela ne fonctionnait pas bien sinon. Encore merci pour ton aide lami20j, comme d'habitude super efficace...
Bon dimanche
j'ai juste changer la fermeture du fichier de place car cela ne fonctionnait pas bien sinon. Encore merci pour ton aide lami20j, comme d'habitude super efficace...
void lireFichier(){ int i; fichier=fopen("essai.txt", "r"); for (i=0;i<3;i++){ fscanf(fichier, "%s\t%s\t%s\t%d", P[i].nom, P[i].prenom, P[i].loc, &P[i].age); printf("numero = %d\t nom : %s\t prenom : %s\t localite : %s\t age : %d\n", i+1 , P[i].nom, P[i].prenom, P[i].loc, P[i].age); } fclose(fichier); }
Bon dimanche
Ce ne sont pas des conneries. Tu peux mettre ce que tu veux, sauf les chaînes format seront remplacées par les variables.
Oups, tu as raison ;-)
J'ai confondu avec la famille printf ;-))