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 :

Afficher tout le contenu d'un tableau d'un coup


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 8
    Points : 12
    Points
    12
    Par défaut Afficher tout le contenu d'un tableau d'un coup
    Bonjour à tous,

    Je suis débutant en C, je me pose une question toute bête mais je ne parviens pas à trouver la réponse malgré mes recherches.


    Je souhaiterais non pas afficher le contenu d'un caractère de mon tableau mais tous le contenu.
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char tab[] = "Bonjour tout le monde";
    Je ne peux pas faire:
    Afin d'avoir en retour le message: Bonjour tout le monde

    Mais seulement l'affichage d'un seul caractère spécifique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%c\n", tab[5]); //affiche u
    Quelqu'un pourrait m'aider s'ils vous plait?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si ton tableau est une vraie chaîne de caractères C (avec caractère nul terminal) comme dans ton exemple, tu peux simplement l'afficher avec printf("%s\n", tab);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour.

    Citation Envoyé par arccho Voir le message
    Je ne peux pas faire:
    printf("%c\n", tab);
    C'est à dire, on te l'a interdit ou tu as un message d'erreur ?

    Si tu as un message d'erreur, c'est parce qu'il faut mettre un %s à la place du %c.

    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  4. #4
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour
    Citation Envoyé par arccho Voir le message
    Bonjour à tous,

    Je suis débutant en C, je me pose une question toute bête mais je ne parviens pas à trouver la réponse malgré mes recherches.


    Je souhaiterais non pas afficher le contenu d'un caractère de mon tableau mais tous le contenu.
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char tab[] = "Bonjour tout le monde";
    Je ne peux pas faire:
    Afin d'avoir en retour le message: Bonjour tout le monde

    Mais seulement l'affichage d'un seul caractère spécifique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%c\n", tab[5]); //affiche u
    Quelqu'un pourrait m'aider s'ils vous plait?


    Quelque explication s’impose. On ne peut pas afficher le contenu d’un caractère ça n’a pas vraiment de sens, mais l’on va plutôt afficher le contenu d’une variable de type caractère. Pour ce faire en utilisent les spécificateurs de format de la fonction "printf" (écriture formatée de données). Qui sont : "%d, %i, %u, %o, %x , %s" etc." qui sont des spécificateurs de format qui indiquent la manière dont les valeurs des expressions doivent être imprimées. Ainsi donc, pour afficher le contenu d’une variable de type caractère avec la fonction d’écriture formatée de données appeler "printf" il faut utiliser le spécificateur de formats "%c" de mémoire qui est du type "int", mais qui imprime sur votre écran un caractère;
    Exemple:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void){
     
        int ci_caractere = 65;   /* variable de type entier valeur 65 */
        char c_caractere = 'A';  /* Variable de type caractère valeur 'A' */
        printf( "%c\t valeur\t:%d\n", c_caractere,
               c_caractere );
        printf( "%c\t valeur\t:%d\n", ci_caractere,
               ci_caractere );
     
        return EXIT_SUCCESS;
    }

    Quant au tableau de type caractère, ce n’est rien d’autre qu’une variable qui contient plusieurs données du même type dans le cas actuel ce sont des caractères. Il faut également comprendre que le langage programmation C ne dispose pas de type spécifique pour les chaînes de caractères, mais s’arrange à utiliser une convention si je peux dire utilisant une suite contiguë de caractère (dont le dernier correspond au caractère NULL '\0' ). Ainsi donc, le tableaux de caractère va donc être utiliser comme étant une chaînes de caractères.
    (un tableaux d'entier, contient uniquement des entiers, un tableaux de caractère contient uniquement des caractères, etc. Car, le langage C pour un rappel est un langage de programmation fortement typé).

    Pour afficher l’ensemble du contenu du tableau de caractère, vous avez deux méthodes. La première, la plus direct et simple est l’utilisation d’un spécificateur de formats qui est "%s" qui est de type "char*" (qui est un variable pointeur sur un type ou vers un type char (caractère). Les pointeurs sont des variables de types adresse "(pour faire simple)" et donc un pointeur est une variable de type adresse associé à un type de donnée en mémoire qui dans notre exemple est de type caractère.) et dont l’impression sur l’écran est une chaîne de caractères (tout le contenue du tableau) Exemple:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void){
     
        char c_str_tab[] = "SAMBIA39";
        printf( "%s\n", c_str_tab );
        return EXIT_SUCCESS;
    }
    (Attention, un tableau n’est pas un pointeur il existe juste une relation qui s’apparente au pointeur, exemple "char tab[10]", "tab" désigne l’adresse du premier élément du tableau donc "&Tab[0]" ou encore "*Tab" qui vaut "Tab[0]"). La deuxième méthode est d’utiliser le précédent spécification de formats "%c" que j’ai mentionné plus haut pour afficher l’ensemble des éléments du tableau (qui forme la chaîne de caractères). Il faut donc, utiliser une boucle "pour" où "tant que" pour parcourir l’ensemble des éléments du tableau et les afficher avec des précautions préalables qui sont la dimension de votre tableau afin d'évité des débordement
    Exemple:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void){
     
        short i = 0;
        char c_str_tab[8] = "SAMBIA39";
        for( i = 0; i < 8; i++ )
            printf( "%c", c_str_tab[i] ); // affichage sur une ligne
        printf( "\n"); // retour à la ligne pour l'affichage
        return EXIT_SUCCESS;
    }

    Citation Envoyé par arccho Voir le message
    Mais seulement l'affichage d'un seul caractère spécifique:
    printf("%c\n", tab[5]); //affiche u
    Quelqu'un pourrait m'aider s'ils vous plait?
    Faire ce que vous avez fait ci-dessus, ne fait qu’afficher l’élément du tableau qui est a l’indice 5 exemples:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void){
        char c_str_tab[8] = "SAMBIA39";
        printf( "%c\n", c_str_tab[5]);
        return EXIT_SUCCESS;
    }

    Un conseil de débutant, relire les cours et faire des exercices ce n’est qu’en travers de ça que vous arriveriez à comprendre.
    à bientôt
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Une solution encore plus simple est d'utiliser puts.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const char* message = "hello, world";
    puts(message);

  6. #6
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 8
    Points : 12
    Points
    12
    Par défaut
    Merci pour tous ces détails.

    Effectivement je ne savais pas que la fonction printf propose autant de format.
    Je pense que je vais dans mon cas me contenter de %s.

    Merci beaucoup!

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

Discussions similaires

  1. Onglet Afficher tout le contenu du site
    Par guintolli dans le forum SharePoint
    Réponses: 6
    Dernier message: 05/08/2008, 18h16
  2. Bouton Afficher tout le contenu du site
    Par glucas59 dans le forum SharePoint
    Réponses: 3
    Dernier message: 28/04/2008, 11h11
  3. [MySQL] moteur de recherche affichant tout le contenu de la table
    Par alicia26 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/04/2008, 11h50
  4. [Tableaux] afficher un texte contenu dans un tableau
    Par liverbird dans le forum Langage
    Réponses: 2
    Dernier message: 04/07/2007, 16h41
  5. [TP] Afficher des chaînes contenues dans un tableau
    Par mah00 dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 20/05/2007, 09h15

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