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 régulier
    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
    Points : 100
    Points
    100
    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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    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 éminent sénior
    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
    Points : 13 926
    Points
    13 926
    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");
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Membre régulier
    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
    Points : 100
    Points
    100
    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