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 :

Problème d'initialisation d'un tableau


Sujet :

C

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut Problème d'initialisation d'un tableau
    Bonjour,

    à la compilation d'un programme, j'obtiens ce message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    graphe.c: In function ‘main’:
    graphe.c:350: attention : accolades manquantes autour de l'initialisation
    graphe.c:350: attention : (near initialization for ‘tabCouple[0].duoIP’)
    La structure t_couple est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     typedef struct {
        char *duoIP[2];
      } t_couple;
    et voici mon initialisation : c'est l'endroit qui pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     t_couple tabCouple[]={
        {"192.168.0.1", "192.168.0.2"},		
        {"192.168.0.1", "192.168.0.4"},		
        {"192.168.0.2", "192.168.0.3"},		
        {"192.168.0.2", "192.168.0.4"},		
        {"192.168.0.3", "192.168.0.4"},		
        {"192.168.0.4", "192.168.0.5"},		
        {"192.168.0.5", "192.168.0.2"},		
        {"192.168.0.6", "192.168.0.5"},		
        {NULL, NULL}
      };

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Chaque structure contient un tableau (ce qui n'est pas forcément nécessaire).

    2 solutions:
    - Déclarer simplement deux char * dans ta structure (ou deux char const *, plutôt)
    - Doubler les accolades à chaque ligne.

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par Médinoc
    Chaque structure contient un tableau (ce qui n'est pas forcément nécessaire).

    2 solutions:
    - Déclarer simplement deux char * dans ta structure (ou deux char const *, plutôt)
    - Doubler les accolades à chaque ligne.
    Salut,

    j'ai doublé les accolades et c'est ok.

    Merci

  4. #4
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Bonjour!

    Je suis surprise...
    Je viens de tester le programme suivant:
    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>
    typedef struct {
        char *duoIP[2];
      } t_couple;
     
    int main(void){
    	t_couple tabCouple[]={
        {"192.168.0.1", "192.168.0.2"},		
        {"192.168.0.1", "192.168.0.4"},		
        {"192.168.0.2", "192.168.0.3"},		
        {"192.168.0.2", "192.168.0.4"},		
        {"192.168.0.3", "192.168.0.4"},		
        {"192.168.0.4", "192.168.0.5"},		
        {"192.168.0.5", "192.168.0.2"},		
        {"192.168.0.6", "192.168.0.5"},		
        {NULL, NULL}
      };
    printf("%s\n",tabCouple[0].duoIP[1]);
    getchar(); 
    }
    Ca marche très bien...
    Tu n'as pas un autre problème dans ton code???

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par joellel
    Bonjour!

    Je suis surprise...
    Je viens de tester le programme suivant:
    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>
    typedef struct {
        char *duoIP[2];
      } t_couple;
     
    int main(void){
    	t_couple tabCouple[]={
        {"192.168.0.1", "192.168.0.2"},		
        {"192.168.0.1", "192.168.0.4"},		
        {"192.168.0.2", "192.168.0.3"},		
        {"192.168.0.2", "192.168.0.4"},		
        {"192.168.0.3", "192.168.0.4"},		
        {"192.168.0.4", "192.168.0.5"},		
        {"192.168.0.5", "192.168.0.2"},		
        {"192.168.0.6", "192.168.0.5"},		
        {NULL, NULL}
      };
    printf("%s\n",tabCouple[0].duoIP[1]);
    getchar(); 
    }
    Ca marche très bien...
    Tu n'as pas un autre problème dans ton code???
    Salut,
    Mon programme tournait mais j'avais un avertissement
    comme l'a proposé medinoc, sur chaque ligne, j'ai réecrit comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        {{"192.168.0.1", "192.168.0.2"}},
    et l'avertissement a disparu.
    Je compile de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -W -Wall -g graphe.c -o graphe
    essaye pour voir si tu n'as toujours pas d'avertissement

  6. #6
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Oups...
    J'avais compilé sans l'affichage de tous les warnings...

  7. #7
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par Premium
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -W -Wall -g graphe.c -o graphe
    essaye pour voir si tu n'as toujours pas d'avertissement
    Hum que fais -W puisque tu as mis -Wall ?

  8. #8
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par Premium
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     typedef struct {
        char *duoIP[2];
      } t_couple;
    tu connais la longueur de ta chaine, c'est sympa ca aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     typedef struct {
        char duoIP[2][16];
        int nbDuoIP;
      } t_couple;

  9. #9
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par gnto
    Hum que fais -W puisque tu as mis -Wall ?
    man gcc
    L'option -Wall ne signiale pas toutes les erreurs.

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Moi, je compile généralement en -Wall -Wextra -Wmissing-prototypes (Emmanuel n'aime pas celui-là) -Wwrite-strings -Wnomissing-initializers
    Et encore, il doit en manquer.

    Enfin, il faut un GCC suffisament récent pour toutes ces options. mingW (GCC 3.4.2) ne supporte pas le dernier...


    PS: sans oublier les pour les standards: -std=c99 -pedantic.
    ne pas utiliser -ansi si vous avez des commentaires unilignes: ce standard arriéré ne les supporte pas.

  11. #11
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par Médinoc
    Moi, je compile généralement en -Wall -Wextra -Wmissing-prototypes (Emmanuel n'aime pas celui-là) -Wwrite-strings -Wnomissing-initializers
    Que n'aime pas emmanuel ? lol nan plus surieux c'est -Wmissing-prototypes ou -Wwrite-strings

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    C'est -Wmissing-prototypes.

    Pour lui, mettre des prototypes lorsque cela n'est pas ABSOLUMENT nécessaire encourage à programmer "dans tous les sens" (c'est-à-dire, le contraire de "mettre les petites fonctions d'abord, puis les fonctions qui les utilisent ensuite").
    Alors que moi, avant de découvrir ce warning, j'avais plutôt tendance à faire le contraire: Mettre les fonctions utilisées après les fonctions utilisatrices pour être sûr de ne pas oublier le prototype... (cherchez pas, on a tous nos petites manies)

  13. #13
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Médinoc
    ce standard arriéré ne les supporte pas.
    C'est pourtant le seul qui devrait être utilisé pour assurer la portabilité du code !

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Que veux-tu, j'aime mes commentaires unilignes.
    On a besoin de son petit confort, quoi

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/05/2011, 13h38
  2. problème d'initialisation d'un tableau de structure
    Par hamma2 dans le forum Débuter
    Réponses: 1
    Dernier message: 08/03/2010, 19h26
  3. initialisation d'un tableau probléme
    Par id.prog dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 11/04/2008, 10h27
  4. [Tableaux] Problème d'initialisation de tableau ?
    Par Jiraiya42 dans le forum Langage
    Réponses: 7
    Dernier message: 01/07/2007, 11h26
  5. Problème d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2005, 16h30

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