IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Comment afficher un élément d'un tableau ?


Sujet :

C

  1. #1
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut Comment afficher un élément d'un tableau ?
    Bonjour, je cherche à créer un programme qui demande du texte et le décompose puis l'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stddef.h>
    void fclean(char *s_buffer, FILE *stream);
    int main(int argc, char *argv[])
    {
      char txt[256];
      int i =0;
      size_t tab;
     
      tab = sizeof txt;
      fprintf(stdout, "%i", tab);
     
      fgets(txt, sizeof txt, stdin);
      fclean(txt, stdin);
     
      for(i;i<tab;i++)
      {
                     fprintf(stdout, "%c", txt[i]);
      }
     
      system("PAUSE"); 
      return 0;
    }
    void fclean(char *s_buffer, FILE *stream)
    {
        if (s_buffer != NULL && stream != NULL)
        {
            char *pc = strchr(s_buffer, '\n');
     
            if (pc != NULL) /* La saisie n'a pas été tronquée */
            {
                 /* On remplace '\n' par le caractère nul '\0' */
                 *pc = 0;
            }
            else
            {
                /* La saisie a été tronquée, on purge le flux d'entrée */
                int c;
                while ((c = fgetc(stream)) != '\n' && c != EOF)
                {
                      //Rien
                }
            }
        }
    }
    Comme ceci :

    texte
    t
    e
    x
    t
    e
    Mais je n'arrive pas à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     fprintf(stdout, "%c", txt[i]);
    %c n'est pas bon, que faut il mettre ?

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Pourquoi parcourir tout le tableau ?

    Essayes ceci à la place de ta boucle "for" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(txt[i] != '\0')
    {
           fprintf(stdout, "%c\n", txt[i++]);
    }
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par _SamSoft_ Voir le message
    Bonjour, je cherche à créer un programme qui demande du texte et le décompose puis l'affiche :
    Et un projet de plus... Quand je dis que tu te disperses...

    Etant donné que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                     fprintf(stdout, "%c", txt[i]);
    est une façon compliquée d'écrire
    les caractères seront côte à côte. Si tu veux qu'il soient les uns en dessous des autres, il faut ajouter un saut de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       putchar(txt[i]);
       putchar('\n');
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                     fprintf(stdout, "%c\n", txt[i]);
    C'est un peu évident non ? J'aimerais bien que quand tu as un problème, tu ne saute pas sur le clavier pour demande de l'aide, mais que tu prennes un peu le temps de réfléchir à la question...
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(stdout, "%c\n", txt[i]);
    C'est pourtant ce que j'ai mis. -_- (un projet de plus oui, mais un tout petit). Je viens de voir (d'après ce qu'a dit crocodilex) que c'est au niveau de la boucle qu'il y avait une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stddef.h>
    void fclean(char *s_buffer, FILE *stream);
    int main(int argc, char *argv[])
    {
      char txt[256];
      int i =0;
     
      fgets(txt, sizeof txt, stdin);
      fclean(txt, stdin);
     
      do
      {
                     fprintf(stdout, "%c\n", txt[i++]);
      }
      while(txt[i] != '\0');
     
      system("PAUSE"); 
      return 0;
    }
    void fclean(char *s_buffer, FILE *stream)
    {
        if (s_buffer != NULL && stream != NULL)
        {
            char *pc = strchr(s_buffer, '\n');
     
            if (pc != NULL) /* La saisie n'a pas été tronquée */
            {
                 /* On remplace '\n' par le caractère nul '\0' */
                 *pc = 0;
            }
            else
            {
                /* La saisie a été tronquée, on purge le flux d'entrée */
                int c;
                while ((c = fgetc(stream)) != '\n' && c != EOF)
                {
                      //Rien
                }
            }
        }
    }
    Résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher certains éléments d'un tableau.
    Par Olivier Regnier dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2008, 12h12
  2. Réponses: 1
    Dernier message: 23/04/2008, 00h05
  3. Réponses: 9
    Dernier message: 28/11/2007, 08h12
  4. comment afficher aléatoirement un nom déun tableau de noms ?
    Par rddev dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 20/08/2007, 09h13
  5. Comment afficher des éléments de même nom en 1 seule fois
    Par magic8392 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 27/09/2005, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo