Traitement fichier en C
limbergh
Messages postés
669
Statut
Membre
-
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
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)