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 :

tableau de chaines de caractères


Sujet :

C

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 12
    Points
    12
    Par défaut tableau de chaines de caractères
    Bonjour,
    J'ai quelques petits problèmes avec l'un de mes programmes, et je ne trouve pas de réponse claire sur internet... ;-(
    HELP ME, PLEASE

    Mon but :
    Récupérer des bouts de chaine de caractère et les stocker dans un tableau.

    Fonctionnement du programme :
    - je récupère une (grande) chaine de caractère que je stocke dans a.
    - ensuite je coupe ma chaine (a); chaque bout sera stocké dans une case du tableau tab.

    Exemple :
    a = "toto,titi,tata"
    tab[0] = "toto"
    tab[1] = "titi"
    ...

    Voici mon code actuel:
    Il marche, oupi, mais pas dans tous les cas malheureusement.

    Précisions supplémentaires:
    Dans mon programme je crée trois tableaux de type tab, et je possède trois tableaux statique de type a.
    La récupération et le remplissage des deux premiers tableau de type tab marchent très bien pour le troisième, par contre, j'ai des caractères bizarres qui s'ajoutent ce qui me crée une erreur de ségmentation.

    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
     
    //initialisation
    char a[50];
    char a1[50];
    char a2[50];
    char* tab[10]; // tableau de chaine de caractère
    char* tab1[10];
    char* tab2[10];
    int i, nb_variables = 0;
     
    /*
    création de a, a1, a2
    remplissage de tab et tab1, aucun problème, c'est exactement le même bout de code que pour tab2, c'est juste les chaines qui changent.
    */
     
    //remplissage de tab2
    for (i=0; i < strlen(a2); i++){
    	if (a2[i]!=','){
    		cString[0] = a2[i];
    		cString[1] = '\0';
    		strcat(a2[nb_variables], cString);
    	}
    	else {
    		nb_variables++;
    		tab2[nb_variables] = (char*)malloc(sizeof(char));
    	}
    }
    nb_variables++;
    for(i=0; i < nb_variables; i++)
    	printf("tab2[%d] = %s\n", i, tab2[i]);
     
    // erreur de segmentation, des caractères bizarres apparaissnt dans tab2[0]
    Je pense que c'est un problème d'initialisation, d'ou ma question:
    Comment puis-je faire pour initialiser correctement mes tableaux??

    Si vous avez une idée et/ou des remarques n'hésitez pas...

    Merci d'avance=)

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Je débute en C et aussi je ne saurai pas te dire ce qui ne va pas dans ton code (je ne connais pas Cstring qui est du C++ à priori).
    J'ai fait la fonction autrement et il me semble que ça fonctionne (c'est sûr c'est un peu plus lourd comme code ) :

    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>
     
    int main()
    {
        //initialisation
        char a[50] = {0};
        char a1[50] = {0};
        char a2[] = "hello, essai 1,toto,";
        char* tab[10] = {0}; // tableau de chaine de caractère
        char* tab1[10] = {0};
        char* tab2[10] = {0};
        char mot[10] = {0}; //chaine temporaire pour stocker un mot
        char vide[10] = {0}; // je l'utilise pour vider ma chaine temporaire mot
        int i,j = 0, nb_variables = 0;
     
        /*
        création de a, a1, a2
        remplissage de tab et tab1, aucun problème, c'est exactement le même bout de code que pour tab2, c'est juste les chaines qui changent.
        */
     
     
        //remplissage de tab2
        for (i=0; i < strlen(a2); i++){
            if (a2[i]!= ','){
                mot[j] = a2[i];
            }
            else {
                mot[j] = '\0';
                if (mot != NULL){
                    tab2[nb_variables] = (char*) malloc(sizeof(mot));
                    strcpy(tab2[nb_variables],mot);
                }
                j = -1;
                nb_variables++;
                strcpy(mot,vide);
            }
            j++;
        }
        for(i=0; i < nb_variables; i++)
            printf("tab2[%d] = %s\n", i, tab2[i]);
     
        // erreur de segmentation, des caractères bizarres apparaissnt dans tab2[0]
     
        return 0;
    }
    J'ai supposé que la chaîne se terminait obligatoirement par une virgule. On aurait pu tester la fin de la chaîne avec le caractère '\0' aussi.

    J'ai attribuer une taille toute petite à mot mais on peut mettre beaucoup plus bien sûr !

    Je ne sais pas si ça peut t'aider mais ça m'a fait bosser mes chaînes

Discussions similaires

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

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