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 de tableau à deux dimensions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut Problème de tableau à deux dimensions
    Bonjour, je ne comprend pas quelque chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int map[H_WINDOW][H_WINDOW] = {0};
    Avec H_WINDOW une define ayant pour valeur 480

    Le problème c'est que lorsque je compile, il me met :

    /home/samsoft/Programmes/C/SDL/Life/life.c:: In function «createLife":
    /home/samsoft/Programmes/C/SDL/Life/life.c:30: attention : accolades manquantes autour de l'initialisation
    /home/samsoft/Programmes/C/SDL/Life/life.c:30: attention : (near initialization for «map[0]")
    C'est étrange, je ne peux même pas initialiser mon tableau

    Si je met :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int map[L_WINDOW][H_WINDOW] = {};
    Ca compile.

    Merci d'avance

  2. #2
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    Bon, pour le moment, j'initialise mon tableau comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        while(sizeScr > 0)
        {
            map[sizeScr][sizeScr] = NOTHING;
            sizeScr--;
        }

    Est-ce correct ?

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    C'est gcc 4.x qui est chatouilleux sur ce type d'initialisations pourtant parfaitement déninies par la norme du langage. Si tu veux être rigoureux, il te faudrait écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int map[L_WINDOW][H_WINDOW] = {{0}};
    Tu peux sans risque déactiver les options d'avertissement concernée avec -Wno-missing-braces -Wno-missing-field-initializers (voir: http://www.developpez.net/forums/sho...cture+portable).

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    de mémoire, lorsque tu souhaites initialiser ton tableau de la sorte, il faut que tu l'initialise entièrement et non pas juste la première valeur.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    Ouai je me suis posé cette question, j'ai donc créer une boucle qui initialise en entier le tableau sinon super Thierry pour l'astuce

    Merci à vous deux, résolu.

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Bonjour,

    de mémoire, lorsque tu souhaites initialiser ton tableau de la sorte, il faut que tu l'initialise entièrement et non pas juste la première valeur.
    Non, la norme garantit que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int map[L_WINDOW][H_WINDOW] = {{0}};
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int map[L_WINDOW][H_WINDOW] = {0};
    fonctionnent. C'est portable et sans surprise.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

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

Discussions similaires

  1. Problème pointeur dans un tableau à deux dimensions.
    Par Hunken dans le forum Débuter
    Réponses: 2
    Dernier message: 12/03/2015, 11h32
  2. Réponses: 6
    Dernier message: 25/02/2007, 17h56
  3. [Débutant] Problème avec tableau à deux dimensions
    Par beegees dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/12/2006, 14h06
  4. [Tableaux] Problème tri de tableau à deux dimensions
    Par squall62 dans le forum Langage
    Réponses: 21
    Dernier message: 24/05/2006, 18h18
  5. Réponses: 5
    Dernier message: 24/05/2006, 08h59

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