Problème tableau de structure

Ella68 Messages postés 14 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 5 novembre 2009 - 13 juin 2007 à 20:02
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 13 juin 2007 à 23:49
Bonsoir,

voila pour un projet en C, je dois créer des utilisateurs qui seront considérés comme des processus.
A chaque nouvel utilisateur crée, on stockera le PID du processus crée dans un tableau de structure.
Dans ce tableau de structure, on aura le numéro utilisateur, le PID et le nom de l'utilisateur.
Le problème arrive. Dans ce même tableau, je souhaite mettre un second tableau par utilisateur qui contiendra le tableau où seront stockés le nom de tout les forums, et une variable booleenne est mise a coté de chaque nom de forum pour savoir si l'utilisateur est abonné ou non.
Est-il possible de mettre un tableau de structure dans une structure ?

14 réponses

thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007
13 juin 2007 à 20:10
Oui bien sur que tu peux faire ça...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 juin 2007 à 21:17
J'ai pas trop bien compris mais si je me base la dessus:
"Est-il possible de mettre un tableau de structure dans une structure ?"
Oui et non.
Oui si le tableau de structure dans la structure est de type différent ex:
struct toto1 {
      int rien;
      char vraimentrien;
      ...
};

struct toto2 {
    struct toto1 rien[20]; // <- Ok
    ...
};

Non si le tableau est de même type.

struct toto {
    struct toto rien[20]; // <- INVALIDE ! structure non-défini
    ...
};

C++ (@++)<!--
0
thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007
13 juin 2007 à 21:25
tu soulève le problème de structure récursive SAKingdom?

Dans ton exemple

typedef struct toto {
    struct toto tableau_de_struct_de_toto[20]; // <- INVALIDE ! structure non-défini
    ...
}toto;

doit compiler, mais je ne pense pas que se soit le problème posé... Ou alors j'ai mal compris
0
thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007
13 juin 2007 à 21:27
J'ai oublié d'enlever le INVALIDE structure non-défini désolé !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 juin 2007 à 21:28
J'en sais rien. Je n'ai rien compris. Tout ce sur quoi je me base c'est:
"Est-il possible de mettre un tableau de structure dans une structure ?"

Et non, ça ne peut pas compiler.
Imagine, tu déclare une structure qui contient 20 copie d'elle même. Ces 20 copies contiennent toutes 20 copies d'elles même et ainsi de suite indéfiniment. Il y a génération d'une erreur lors de la compilation d'ailleurs.

C++ (@++)<!--
0
thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007
13 juin 2007 à 21:47
Oula j'ai rien dit, désolé ! (j'avais en tête les listes chainées et j'ai même pas réfléchi a cette histoire de tableau)
mais pour revenir à son problème il ne veut pas une structure récursive en fait ce su'il veut si j'ai bien compris c'est :
une structure contenant:
le numéro utilisateur, le PID et le nom de l'utilisateur
ainsi qu'un  (tableau a deux dimension contenant les nom des forum et la valeur booléenne) ou alors (une structure de son choix pour mettre ces info là)

donc il n'y a aucun problème!
0
Ella68 Messages postés 14 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 5 novembre 2009
13 juin 2007 à 21:49
En fait en quelques sorte je pensais faire comme un tableau de tableau.
Voila mon code :

 typedef struct {
    char * Nom_forum;
    int abonne;
    }forum;
   
    forum tab_forum[15];


 typedef struct tab_user {
    int num;
    char* pseudo;
     pid_t PID;
    tab_forum;
    };
  
 tab_user util[5];

je ne sais pas si vous voyez, ce que je veux faire ou si le code est assez clair.
0
Ella68 Messages postés 14 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 5 novembre 2009
13 juin 2007 à 21:51
Oui thomwebster, tu as bien compris en effet, c'est bien ca que je veux faire. Je voulais justement éviter les listes chainées...
0
thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007
13 juin 2007 à 21:55
Comme j'ai formulé mon dernier post tu devrais pouvoir faire tes structures de données normalement. Moi je préfèrerais un tableau a deux dimension plutot qu'une structure...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 juin 2007 à 21:56
Ah ok. C'est ceci que je ne comprenais pas bien:
"Dans ce même tableau, je souhaite mettre un second tableau par utilisateur"
Mais là je comprend un peu mieux.
Cependant:
"le tableau où seront stockés le nom de tout les forums, et une variable booleenne"
À chaque utilisateur, tu énumèrera tout les forums ? Aie aie aie, ça va générer une structure énorme s'il y a beaucoup d'utilisateurs et forums. Il ne serait pas mieux d'indexer les forums avant tout chose et créé un pointeur de int (car le nombre de forum est probablement variable) dans ta structure et lui attribuer les numéros des forums auquel il a droit ?

C++ (@++)<!--
0
thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007
13 juin 2007 à 21:59
Oui c'est sûr que ton choix de structure serait très gourmand en mémoire....
0
Ella68 Messages postés 14 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 5 novembre 2009
13 juin 2007 à 22:04
En fait un utilisateur pourrait s'abonner à n'importe quel forum sans restriction. Mais le problème est que chaque nouveau forum est considéré comme un segment de mémoire partagé. Si je déclare un pointeur, il n'y aurait pas de problème au niveau de la mémoire partagée par la suite ?
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 juin 2007 à 23:45
Errf j'ai pas trop bien compris mais comme tu utilises déjà des pointeurs char pour les pseudos, je ne vois pas pourquoi un pointeur int causerait des problèmes.

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 juin 2007 à 23:49
Et aussi, il faudra un autre membre de type int ou unsigned int ou peut-importe pour indiquer le nombre de forum auquel l'utilisateur a accès (c'est pour savoir combien de donnée il y a dans le pointeurs int)

C++ (@++)<!--
0