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 :

pointeur vers un tableau de chaine de caractères en c


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Italie

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 46
    Points : 27
    Points
    27
    Par défaut pointeur vers un tableau de chaine de caractères en c
    bonjour ou bonsoir!!
    j'ai un projet que je dois le préparer dés ici qlq semaines alors j'ai besoin de qlq aides
    alors je m'explique ma solution consiste a créer un tableau de n chaine et de le faire passer par plusieurs fonction pour faire un traitement bien spécifié
    j'ai 2 question le 1er: est ce que le tableau va perdre tout les modification après la fonction si oui alors comment faire un pointeur vers un tableau de chaine de caractère pour ne pa perdre les modification ?
    2eme question: comment faire le saisie d'un tableau de chaine de caractère?
    voici une exemple que j'ai fait mais malheureusement il ne fonction pas je sais pa pourquoi
    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
    #include <stdio.h>
    void test(char (*ta)[3][10])
    { int i;
        strcpy((*ta)[8],"xx0");
              for(i=0;i<10;i++)
                 {printf("%i",(*ta)[i]);
                   printf("||");}
     
    }
    int main ()
    {
       char tab[3][10],ch;
       int i;
        for(i=0;i<10;i++)
            {scanf("%s",ch);
            strcpy(tab[i],ch);
            }
             test(&tab);
            return 0;
    }
    et merci d'avance

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 853
    Points : 2 297
    Points
    2 297
    Par défaut
    Il y a pleins de problèmes dans ton code, je vais donc les surligner en rouge :

    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
    #include <stdio.h>
    void test(char (*ta)[3][10])
    { int i;
        strcpy((*ta)[8],"xx0");
              for(i=0;i<10;i++)
                 {printf("%i",(*ta)[i]);
                   printf("||");}
     
    }
    int main ()
    {
       char tab[3][10],ch;
       int i;
        for(i=0;i<10;i++)
            {scanf("%s",ch);
            strcpy(tab[i],ch);
            }
             test(&tab);
            return 0;
    }
    Ça en fait quand même pas mal ! Bon déjà, ch est un char dans lequel tu tentes de mettre un char*. Ensuite, tu tentes de copier un char dans un char* en utilisant strcpy (pas bien !).

    Tu tentes de copier un char* dans un char* inexistant (ou qui ne t'est pas alloué tout du moins). Je suis pas sûr que ta boucle fasse ce que tu veux par-contre... Elle affiche la valeur des éléments de ta première chaîne (si je ne me trompe pas) et c'est tout.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 573
    Points
    41 573
    Par défaut
    J'ai du mal à comprendre pourquoi tu as surligné ce qui a trait à tab.
    Ce dont je ne suis pas sûr par contre, c'est l'ordre de ses dimensions. Il va falloir que je vérifie s'il ne faut pas un char[10][3] à la place vu que cabiste007 veut visiblement stocker dix chaînes courtes.

    Edit: Je confirme, il y a bien un problème de ce côté-là: char[3][10] est un tableau de trois chaînes longues (enfin, pour une certaine valeur de "longue").
    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.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Italie

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    merci pour votre reponse rapide je pense que j'ai pas bien exprimé
    tout d'abord c'est une programe que je veux tester avec qlq astuce alors dans mon exemple je veux saisie un tableau de 10 chaine de taille 3 après j'ai fai un appel a une fonction test en utilisant un pointeur de tableau que j'ai créer pour changer la chaine d'indice 8 tous cela j'ai fait pour tester est ce que une astuce de ce genre ce fait comme sa ou nn??
    et j'ai posé 2 question pour comprendre un peut les chose et me corrigé alors les 2 question sont 1er: est ce que le tableau va perdre tout les modification après la fonction si oui alors comment faire un pointeur vers un tableau de chaine de caractère pour ne pa perdre les modification ?
    2eme question: comment faire le saisie d'un tableau de chaine de caractère?
    et merci d'avance
    (dsl si il y a qlq faute de langue car le français n'est pas ma 1er langue )

  5. #5
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 853
    Points : 2 297
    Points
    2 297
    Par défaut
    T'as résolu les problèmes que je t'ai cité ?

    Non, si t'envoies un char* qui vaut "tata" et que dis dis finalement tab[0] = 'u', ton tableau vaudra "uata" en dehors de la fonction. Par-contre tu ne pourras pas toucher au pointeur. Par-exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void func(char *c)
    {
      char *d = 0;
     
      c[0] = 'u';
      c = d;
    }
     
    int other_func(char *c)
    {
       printf("%p %s\n", c, c);
       func(c);
       printf("%p %s\n, c, c);
    }
    Pour récupérer une chaîne de caractère, j'utilise généralement la fonction getline (pas standard par-contre donc je sais pas si elle est dispo sur windows).

Discussions similaires

  1. Réponses: 10
    Dernier message: 31/05/2007, 15h10
  2. Pointeur, tableau et chaines de caractères.
    Par rouliane dans le forum C++
    Réponses: 8
    Dernier message: 19/12/2006, 20h27
  3. Réponses: 15
    Dernier message: 04/11/2006, 10h02
  4. [C] tableau de chaines de caractères
    Par kitsune dans le forum C
    Réponses: 18
    Dernier message: 01/04/2006, 18h18
  5. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43

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