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 :

allocation dynamique d'un tableau de chaîne de caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut allocation dynamique d'un tableau de chaîne de caractères
    Bonjour,
    j'essaie de faire une allocation dynamique pour un tableau de char dont une dimension est connue (la taille des chaînes).
    Voici le code qui pose problème...où est l'erreur ? J'ai dû mal lire la FAQ mais ce code plante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    char texte[100]="Ceci est une chaine de caractères.";
    char * chaine=NULL;
    long n=2, i=0;
     
    chaine=malloc(100*n*sizeof(*chaine));
    strcpy(chaine[i],texte );
    printf("%s\n",chaine[i]);
    free(chaine);

  2. #2
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    Voici une méthode comment faire.

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main(){
            char texte[100]="Ceci est une chaine de caractères.";
            char *chaine=NULL;
     
            chaine=malloc(100*sizeof(chaine));
            if(chaine==NULL)
            {
                    perror("erreur d'allocation");
                    return 1;
            }
            strcpy(chaine,texte );
            printf("%s\n",chaine);
            free(chaine);
            return 0;
    }

  3. #3
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Oui mais c'est pour faire une allocation dynamique pour une chaîne de craractères. Mais j'aimerais faire une allocation pour un tableau de chaînes de caractères.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Par défaut
    ce n'est pas ce que tu disais dans ton premier post !

    Tu cherches à faire quoi exactement ?

    Si tu veux allouer dynamiquement un tableau de chaine de caractère alors tu dois commencer par allouer un tableau de pointeurs sur des char*, puis affecter à chaque pointeur alloué une nouvelle zone allouée dynamiquement sur des char.
    (un malloc de 'n' char*, puis affecter chaque char* à un malloc de char).

    Quoi qu'il en soit dans le code que tu as donné tu fais référence à (*chaine) avant qu'il ne soit alloué, tu demande donc ce qu'il y a à l'adresse NULL, donc ça plante.

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    une chaine de caractères n'est rien d'autre qu'un tableau de caractères, donc tu veux un tableaux de tableaux de caractères : Comment allouer dynamiquement un tableau à 2 dimensions ?

  6. #6
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Citation Envoyé par gege2061
    Bonjour,

    une chaine de caractères n'est rien d'autre qu'un tableau de caractères, donc tu veux un tableaux de tableaux de caractères : Comment allouer dynamiquement un tableau à 2 dimensions ?
    Oui j'y suis déjà allée, mais ça ne marche pas. Je rencontre le problème dans l'application que je développe et dans le petit programme que j'ai fait pour tester l'allocation dynamique. (les quelques lignes que j'ai mis ici).

  7. #7
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Citation Envoyé par espadrille
    ce n'est pas ce que tu disais dans ton premier post !
    Citation Envoyé par acryline (premier post)
    Bonjour,
    j'essaie de faire une allocation dynamique pour un tableau de char dont une dimension est connue (la taille des chaînes).

    ça c'est exactement ce qui est dit dans la FAQ du C au sujet de l'allocation dynamique pour un
    tableau à deux dimensions ...c'est donc ce que j'ai fait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /* METHODE 2*/
    char *tab;
     
    tab = malloc ( sizeof(*tab)  *  taille * taille2);

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

Discussions similaires

  1. [debutant] allocation dynamique d'un tableau.
    Par méphistopheles dans le forum Débuter
    Réponses: 3
    Dernier message: 16/03/2007, 12h45
  2. Réponses: 2
    Dernier message: 05/03/2007, 18h37
  3. Réponses: 67
    Dernier message: 13/02/2007, 18h08
  4. Réponses: 13
    Dernier message: 01/10/2006, 00h25
  5. [PRO*C] Allocation dynamique d'un tableau de VARCHAR
    Par NéalZheimer dans le forum Interfaces de programmation
    Réponses: 5
    Dernier message: 07/07/2006, 13h02

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