Accès à un tableau de structure. (C)

Fermé
Paul99 Messages postés 235 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 16 juin 2010 - 4 oct. 2009 à 15:42
Paul99 Messages postés 235 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 16 juin 2010 - 4 oct. 2009 à 16:49
Bonjour,

Je cherche à accéder depuis une fonction indépendante du main à un attribut d'une structure stcokée dans un tableau créé dynamiquement depuis une autre fonction.
Or, lors de l'accès à un attribut, le système me renvoie une "erreur de segmentation".

Un exemple pour être plus clair :

#include <stdlib.h>
#include <stdio.h>

typedef struct ex ex;
struct ex
{
     int a;
     int b;
};

ex* fonc1(void);
void fonc2(ex *test);

int main()
{
     ex *test;
     test = fonc1();
     fonc2(test);
     free(test);
     return 0;
}

ex* fonc1(void)
{
     ex *test;
     test = (test*)malloc(25*sizeof(ex);
     return test;
}

void fonc2(ex *test)
{
     test.a = 1;        //Erreur de segmentation.
}


L'erreur doit être dans l'utilisation de la structure, mais je ne vois pas où.

Merci d'avance pour les idées !
A voir également:

2 réponses

Je suis très surpris que tu puisses exécuter ce programme; en effet, je vois 2 erreurs rédhibitoires pour la compilation:
- test = (test*)malloc(25*sizeof(ex); au lieu de '(ex*)malloc...',
- test.a = 1; au lieu de 'test->a = 1'.
Bonne continuation.
0
Paul99 Messages postés 235 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 16 juin 2010 23
4 oct. 2009 à 16:49
Merci pour la réponse !

- Pour la première erreur, il s'agissait d'une erreur de saisie, elle n'existe pas dans mon programme.
- Pour la seconde, je ne connaissais pas le symbole '->' en C, uniquemement dans les objets C++.

Je testerais ça dans quelque minutes, quand j'aurais de nouveau accès au code.

Encore merci !
0