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

Résolu/Fermé
davdoo91 Messages postés 31 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 - 19 avril 2007 à 14:10
davdoo91 Messages postés 31 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 - 20 avril 2007 à 20:42
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 jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 2
19 avril 2007 à 15:13
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 mercredi 18 avril 2007 Statut Membre Dernière intervention 20 juillet 2007 3
19 avril 2007 à 14:28
Je pense que c'est:

fgets(nom,20,stdin);
etc ...
0
davdoo91 Messages postés 31 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 2
19 avril 2007 à 14:44
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
19 avril 2007 à 14:47
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 jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 2
19 avril 2007 à 14:55
je l'affiche avec stdout non?
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
19 avril 2007 à 15:06
Tu es sous Linux ?
0
davdoo91 Messages postés 31 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 2
19 avril 2007 à 15:10
non, windows
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
19 avril 2007 à 15:13
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
19 avril 2007 à 15:16
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 mercredi 18 avril 2007 Statut Membre Dernière intervention 20 juillet 2007 3
19 avril 2007 à 16:24
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
19 avril 2007 à 16:55
Vi mais il a l'air de vouloir utiliser stdout directement lui :)
0
Beurke Messages postés 38 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 20 juillet 2007 3
19 avril 2007 à 17:08
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
19 avril 2007 à 17:13
Rien à ajouter ^^ Variable temp et ça roule !
0
davdoo91 Messages postés 31 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 2
19 avril 2007 à 23:14
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 jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 2
19 avril 2007 à 23:47
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 mercredi 18 avril 2007 Statut Membre Dernière intervention 20 juillet 2007 3
20 avril 2007 à 10:00
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
20 avril 2007 à 10:10
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 jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 2
20 avril 2007 à 10:41
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
20 avril 2007 à 11:17
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 jeudi 19 avril 2007 Statut Membre Dernière intervention 3 décembre 2009 2
20 avril 2007 à 12:42
et comment tu fais ca?
0
andejen Messages postés 148 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 30 juillet 2008 22
20 avril 2007 à 12:51
avec la fonction Strcat
0
Beurke Messages postés 38 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 20 juillet 2007 3
20 avril 2007 à 15:07
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 jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
20 avril 2007 à 15:19
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 mercredi 18 avril 2007 Statut Membre Dernière intervention 20 juillet 2007 3
20 avril 2007 à 16:46
Justement, c'est exprès pour avoir les 0 devant
;-)
0