Traitement fichier en C
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 -
Bonsoir,
j'ai vu au cours (du soir) le traitement des fichiers. J'ai fait u code qui demande
à l'utilisateur d'introduire 3 noms ainsi que leur age et une fois l'introduction faite,
d'enregistrer le tout dans un fichier.
Tout se passe bien pour l'encodage et une fois que l'on demande d'introduire le
nom du fichier, après ça, ça plante. Je ne vois pas pourquoi, si quelqu'un peut m'expliquer
c'est avec joie...
Voici mon code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct personne
{
char nom[25];
int age;
} PERS;
int main(int argc, char *argv[])
{
PERS p;
char nom2[30];
FILE *fichier;
int i=0;
char nomfichier[50];
for (i=0;i<3;i++)
{
printf("Nom a encoder ? ");
gets(nom2);
strcpy(p.nom, nom2);
printf ("age ? ");
scanf("%d", &p.age);
printf("vous avez encode %s\t%d\n", p.nom, p.age);
fflush(stdin);
}
printf("le nom du fichier ? ");
gets(nomfichier);
fichier=fopen(nomfichier, "r");
fprintf(nomfichier, "%s %d", p.nom, p.age);
fclose(nomfichier);
system("PAUSE");
return 0;
}
Merci d'avance
j'ai vu au cours (du soir) le traitement des fichiers. J'ai fait u code qui demande
à l'utilisateur d'introduire 3 noms ainsi que leur age et une fois l'introduction faite,
d'enregistrer le tout dans un fichier.
Tout se passe bien pour l'encodage et une fois que l'on demande d'introduire le
nom du fichier, après ça, ça plante. Je ne vois pas pourquoi, si quelqu'un peut m'expliquer
c'est avec joie...
Voici mon code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct personne
{
char nom[25];
int age;
} PERS;
int main(int argc, char *argv[])
{
PERS p;
char nom2[30];
FILE *fichier;
int i=0;
char nomfichier[50];
for (i=0;i<3;i++)
{
printf("Nom a encoder ? ");
gets(nom2);
strcpy(p.nom, nom2);
printf ("age ? ");
scanf("%d", &p.age);
printf("vous avez encode %s\t%d\n", p.nom, p.age);
fflush(stdin);
}
printf("le nom du fichier ? ");
gets(nomfichier);
fichier=fopen(nomfichier, "r");
fprintf(nomfichier, "%s %d", p.nom, p.age);
fclose(nomfichier);
system("PAUSE");
return 0;
}
Merci d'avance
A voir également:
- Traitement fichier en C
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
1 réponse
Salut,
tu n'as pas besoin d'une structure pour ce cas simple.
tu n'as qu'à faire une boucle de saisie et tu écrit directement dans le fichier
fflush traite les flux en écriture (stdin c'est l'entrée standard donc lecture)
tu n'as pas besoin d'une structure pour ce cas simple.
tu n'as qu'à faire une boucle de saisie et tu écrit directement dans le fichier
lami20j@debian:~/trash$ cat limbergh.c #include <stdio.h> int main (int argc, char *argv[]) { char nom[30]; int age; FILE *fichier; int i = 0; fichier = fopen("nometage.txt","a+"); for (i = 0; i < 3; i++) { printf ("Nom a encoder ? "); scanf("%s",nom); printf ("age ? "); scanf ("%d", &age); printf ("vous avez encode %s\t%d\n", nom, age); fprintf(fichier,"%s %d\n",nom,age); } fclose (fichier); return 0; } lami20j@debian:~/trash$ gcc limbergh.c lami20j@debian:~/trash$ ./a.out Nom a encoder ? aaa age ? 10 vous avez encode aaa 10 Nom a encoder ? bbb age ? 20 vous avez encode bbb 20 Nom a encoder ? ccc age ? 30 vous avez encode ccc 30 lami20j@debian:~/trash$ cat nometage.txt aaa 10 bbb 20 ccc 30 lami20j@debian:~/trash$fflush(stdin) et complétement inutile c'est juste une illusion
fflush traite les flux en écriture (stdin c'est l'entrée standard donc lecture)