[affichage] d'un fichier à l'écran
Résoludavdoo91 Messages postés 31 Date d'inscription Statut Membre -
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
Configuration: Windows XP Internet Explorer 6.0
23 réponses
- 1
- 2
Affichage formaté du contenu d’un fichier en C est discuté, avec l’intention d’afficher Nom puis prénom en lisant des lignes du fichier et en les imprimant. Des réponses préconisent de lire dans un tampon, par exemple fgets(tab, sizeof tab, fich), puis d’afficher avec fputs(tab, stdout) ou printf, afin d’éviter d’écrire directement dans stdout. D’autres échanges évoquent la gestion des retours chariot et des terminators, des erreurs potentielles liées à fopen, et l’emplacement des données dans tab qui influence l’affichage. En parallèle, plusieurs préoccupations cross-plateformes (Windows XP, Linux) émergent et la nécessité de traiter le formatage du retour chariot pour obtenir une présentation comme 4/8/1984.
-
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
-
-
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. -
Salut,
C'est normal que tu arrives pas à afficher, tu saisies dans ta chaîne mais tu affiches pas ta chaîne !
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Tu es sous Linux ?
-
-
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 ?
-
C'est quoi le nom de ton fichier ?
Il est dans la structure adher ? nom c est un char* ?
-
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); } -
Vi mais il a l'air de vouloir utiliser stdout directement lui :)
-
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. -
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 -
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 ?
-
Salut,
Soit c'est juste pour l'affichage et dans ce cas du peux faire un truc genreprintf("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 datechar tab2[10]; tab2[0]=tab[0]; tab2[1]='/'; ...
-
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 -
Tu concatènes tab, tab2 et tab3 après la saisie de la date sans oublier les '/' entre les jours/mois/année.
-
-
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 -
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 !
- 1
- 2