[affichage] d'un fichier à l'écran

Résolu
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
Bonjou,

J'aurais saoir ce qui ne va pas dans ma ligne de programme.
Pour info, je veux afficher ce qu'il y a dans le fichier à l'écran comme ceci:

printf("Nom\n");
fgets(stdout,20,fich);
printf("prenom\n");
fgets(stdout,20,fich);

merci de vos réponses
A voir également:

23 réponses

davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   2
 
la normalement ca devrais marcher mais ca m affiche nimporte koi :
fich = fopen(adher.nom, "r");
printf("\nNom:");
fgets(tab,sizeof tab,fich);
fputs(tab,stdout);
ou tab déclaré en tableau de caractere
1
Beurke Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   3
 
Je pense que c'est:

fgets(nom,20,stdin);
etc ...
0
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   2
 
non mais en fait fich correspond à mon fichier où contient la donné nom, et je veux l'afficher à l'écran.
Mais sinon j 'ai essayé ta méthode ca ne marche pas.
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Salut,

C'est normal que tu arrives pas à afficher, tu saisies dans ta chaîne mais tu affiches pas ta chaîne !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   2
 
je l'affiche avec stdout non?
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Tu es sous Linux ?
0
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   2
 
non, windows
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Essaye de passer par une valeur intermédiaire qui stockera la chaine de caractère.

Sinon c'est quoi l'erreur ? Y a un msg d'erreur ? Ou ça bug ?
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
C'est quoi le nom de ton fichier ?
Il est dans la structure adher ? nom c est un char* ?
0
Beurke Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   3
 
Si on est bien en 'C':
char tab[100];
FILE *fich;

fich=fopen("...","r");
if (fich==NULL)
{
   bla bla erreur
}
else
{
   fgets(tab,100,fich);
   printf("Nom\n%s\n",tab);
}
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Vi mais il a l'air de vouloir utiliser stdout directement lui :)
0
Beurke Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   3
 
C'est idiot, puisqu'on fait un printf juste avant ! Soit on l'utilise partout, soit on ne l'utilise pas, non ?
Sinon, à coup de stdout, ça donne:
char tab[100];
FILE *fich;

fich=fopen("...","r");
if (fich==NULL)
{
   bla bla erreur
}
else
{
   fgets(tab,100,fich);
   fprintf(stdout,"Nom\n%s\n",tab);
}
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Rien à ajouter ^^ Variable temp et ça roule !
0
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   2
 
c bon j ai trouvé merci de vos réponse

en fait qu en je tester j avais ouvert le fichier en écriture

puis je le réouvrais en lecture sans l avoir fermé au préalable avec fclose.
0
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   2
 
Par contre j'ai une autre question : je voulais savoir comment faire pour supprimer les retours chariot mis dans mon tableau tab.

Car par exemple dans mon fichier j ai ca:
4
8
1984

et j aurais aimé l afficher comme ca : 4/8/1984
0
Beurke Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   3
 
Je ne suis pas sûr de comprendre. Tu pourrais montrer le fichier d'entrée et la partie du prog. qui affiche la date ?
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Salut,

Soit c'est juste pour l'affichage et dans ce cas du peux faire un truc genre
printf("Date : %c/%c/%c%c%c%c\n",tab[0],tab[1],tab[2],tab[3],tab[4],tab[5]

Si les retours chariots gênent, tu peux décaler les indices des tab pour éviter cela.

Soit tu veux absolument avoir un tableau avec un format date
char tab2[10];
tab2[0]=tab[0];
tab2[1]='/';
...
0
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   2
 
Programe affichage :

fich = fopen(adher.nom, "r");
printf("\nNom :");
fgets(tab,20,fich);
fputs(tab,stdout);
printf("prenom : ");
fgets(tab,20,fich);
fputs(tab,stdout);
printf("\ndate de naissance : ");
fgets(tab,20,fich);
fgets(tab2,20,fich);
fgets(tab3,20,fich);

contenu du fichier :
nom
prenom
4
8
1984
nom de la rue
ville
code postale
sport
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Tu concatènes tab, tab2 et tab3 après la saisie de la date sans oublier les '/' entre les jours/mois/année.
0
davdoo91 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   2
 
et comment tu fais ca?
0
andejen Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   22
 
avec la fonction Strcat
0
Beurke Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   3
 
Avec strcat :
strcat(tab,"/");
strcat(tab,tab2);
strcat(tab,"/");
strcat(tab,tab3);
fputs(tab,stdout);
Mais si tu veux faire vraiment propre :
printf("%02d/%02d/%04d\n", atoi(tab), atoi(tab2), atoi(tab3) );
Pour explication:
%02d: Masque pour une donnée entière sur 2 positions zérotée à gauche
atoi(): Conversion d'une chaîne de caractères en entier
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Je dirais même plus, faire un sprintf pour avoir le tout dans un char * ^^ C'est encore plus propre ^^ Pis pas besoin de atoi comme ça (sauf si tu veux mettre les 0 devant !
0
Beurke Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   3
 
Justement, c'est exprès pour avoir les 0 devant
;-)
0