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 sur tableau dans une structure


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web en Loisir
    Inscrit en
    Janvier 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en Loisir

    Informations forums :
    Inscription : Janvier 2006
    Messages : 129
    Par défaut pointeur sur tableau dans une structure
    bonsoir,

    J'aimerais déclarer dans une structure un tableau de chaines de caractères sans au départ connaître le nombre de chaines. ( qui peut varier entre 3 et 10). Ca ne fonctionne pas.

    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
    typedef struct
    {
        char callsign[8];
        char actype[4];
        char departure[4];
        char arrival[4];
        int rfl;
        int pfl;
        int xfl;
        int afl;
        int cfl;
        // tableau de x chaines dont la longueur fait 5 caractères (x étant inconnu au départ)
        char (*route)[5];
    } s_plane;
     
      s_plane avion1 = { "SWR422", "B777", "LSGG", "SKBO", 360, 360, 360, 360, 360};
      // ici x=4 : 4 chaines de caractères de longueur max 5 caractères
      avion1.route = malloc(4*sizeof(*route));
      avion1.route[0] = strcpy(route[0], "PAS");
      avion1.route[1] = strcpy(route[1], "LSE");
      avion1.route[2] = strcpy(route[2], "MINDI");
      avion1.route[3] = strcpy(route[3], "MEN");
    J'ai une erreur 'route' undeclared (first use in this function)

    Que faire ? ça fait 3 heures que j'essaie de trouver des exemples sur le net et que je piétine là dessus.

    Bon c'est sûr je pourrais définir char route[10][4] puisque j'aurais 10 chaines maxi mais bon je voulais tenter la structure dynamique.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Ou
    Mais alors tu dois allouer chaque chaîne de ton tableau
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    route n'est pas connu, avion1.route est connu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      avion1.route = malloc(4*sizeof *avion1.route);
      strcpy(avion1.route[0], "PAS");
      strcpy(avion1.route[1], "LSE");
      strcpy(avion1.route[2], "MINDI"); // Cette chaine est trop grande et ne tient pas dans un char[5]
      strcpy(avion1.route[3], "MEN");

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web en Loisir
    Inscrit en
    Janvier 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en Loisir

    Informations forums :
    Inscription : Janvier 2006
    Messages : 129
    Par défaut
    Merci bien !!
    A force de regarder le code pendant des heures, je voyais plus rien.

    Effectivement, j'avais oublié qu'en C il faut déclarer la longueur de chaine + 1.

    bonne soirée

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 14/04/2014, 00h02
  2. Réponses: 7
    Dernier message: 04/12/2012, 19h02
  3. Réponses: 1
    Dernier message: 22/12/2009, 11h40
  4. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  5. Réponses: 7
    Dernier message: 04/01/2006, 15h34

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