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

Résolu
davdoo91 Messages postés 31 Date d'inscription   Statut Membre -  
davdoo91 Messages postés 31 Date d'inscription   Statut Membre -
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
Configuration: Windows XP
Internet Explorer 6.0

23 réponses

  • 1
  • 2
  1. davdoo91 Messages postés 31 Date d'inscription   Statut Membre 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
  2. Beurke Messages postés 38 Statut Membre 3
     
    Je pense que c'est:

    fgets(nom,20,stdin);
    etc ...
    
    0
  3. davdoo91 Messages postés 31 Date d'inscription   Statut Membre 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. davdoo91 Messages postés 31 Date d'inscription   Statut Membre 2
     
    je l'affiche avec stdout non?
    0
  7. Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
     
    Tu es sous Linux ?
    0
  8. davdoo91 Messages postés 31 Date d'inscription   Statut Membre 2
     
    non, windows
    0
  9. 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
  10. 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
  11. Beurke Messages postés 38 Statut Membre 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
  12. 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
    1. Beurke Messages postés 38 Statut Membre 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
    2. Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
       
      Rien à ajouter ^^ Variable temp et ça roule !
      0
  13. davdoo91 Messages postés 31 Date d'inscription   Statut Membre 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
  14. davdoo91 Messages postés 31 Date d'inscription   Statut Membre 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
  15. Beurke Messages postés 38 Statut Membre 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
  16. 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
  17. davdoo91 Messages postés 31 Date d'inscription   Statut Membre 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
  18. 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
    1. davdoo91 Messages postés 31 Date d'inscription   Statut Membre 2
       
      et comment tu fais ca?
      0
  19. andejen Messages postés 148 Statut Membre 22
     
    avec la fonction Strcat
    0
  20. Beurke Messages postés 38 Statut Membre 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
  21. 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
    1. Beurke Messages postés 38 Statut Membre 3
       
      Justement, c'est exprès pour avoir les 0 devant
      ;-)
      0
  • 1
  • 2