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 :

pb de tableau


Sujet :

C

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut pb de tableau
    Bonjour, je viens de me mettre au C, et j'ai un pb avec mes tableaux

    Voici ce que j'ai fait :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    typedef struc t_mat
    {
    unsigned int dim; // la dimension du tableau
    double * data;
    } Tableau;
     
    void alloc_tableau(unsigned int d,Tableau t)
    {
    assert(d>0);
    t.data=malloc(d*sizeof(double));
    assert(t.data!=NULL);
    }
     
    void affiche_tableau(Tableau t)
    {
    int i;
    for(i=0;i<t.dim;i++)
    printf("%3.5f\t",t.data[i]);
     
    printf("\n");
    }
     
    int main()
    {
    Tableau t1;
    alloc_tableau(3,t1);
    t1.data[0]=1; t1.data[1]=2; t1.data[2]=3;
    affiche_tableau(t1);
     
    return 0;
    }
    et j'obtiens une erreur de segmentation. Le problème vient de la fonction affiche_tableau.


    Autre question : plutôt que de faire t1.data[0]=1; etc, y a-t-il un moyen pour faire plutôt t1[0]=1; ce qui et plus simple ?

    Merci beaucoup.

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Pour modifier une variable passee en argument d'une fonction, en C, il faut passer l'adresse de cette variable (i.e. le contenu d'un pointeur vers cette variable).
    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void alloc_tableau(unsigned int d, Tableau *t)
    {
       ...
       t->data = malloc(d * sizeof (double) );
       ...
    }
    Autre question : plutôt que de faire t1.data[0]=1; etc, y a-t-il un moyen pour faire plutôt t1[0]=1; ce qui et plus simple ?
    Non.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    t.dim n'est pas initialisé dans alloc_tableau()
    Tu doit y recopier la valeur du premier paramètre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Merci beaucoup !

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

Discussions similaires

  1. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51
  2. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  3. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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