Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : struct ? [ Archives / Au secours ] (tomalille)

mercredi 1 février 2006 à 16:13:30 | struct ?

tomalille

Bonjour,
j'ai un petit pb avec mes structs. je vous explique: je definis un struct en globale pour l'utiliser dans une procedure qui lit des donnees a partir d'un fichier.
Dans ce struct j'ai un tableau d'un autre struct dont la capacite est defini automatiquement.
Voici ce que j'ai fait:
struct NOEUDS{
int numNoeuds;
int coordX;
int coordY;
int nbInterfaces;
int coutSlots;
int nbTypes;
int *interfaces;
};

struct INTERFACENOEUD{
int nbCanaux;
int prix;
};

void lectureNoeuds(struct NOEUDS *noeuds,struct INTERFACENOEUD *interfaces)
{
   
    int i;
     tempNoeuds[i]=malloc(sizeof(int)*4);
   
    for(i=0;i<nbNoeuds;i++)
    {   
        fscanf(fichierEntree,"%d",&noeuds[i].numNoeuds);
        fscanf(fichierEntree,"%d",&noeuds[i].coordX);
        fscanf(fichierEntree,"%d",&noeuds[i].coordY);
        fscanf(fichierEntree,"%d",&noeuds[i].nbInterfaces);
        fscanf(fichierEntree,"%d",&noeuds[i].coutSlots);
        fscanf(fichierEntree,"%d",&noeuds[i].nbTypes);
       
        interfaces[i] = malloc(sizeof(struct INTERFACENOEUD) * noeuds[i].nbTypes);
        for(j<0;j<noeuds[i].nbTypes;j++)
        {
            fscanf(fichierEntree,"%d",&interfaces[i][j].nbCanaux);
            fscanf(fichierEntree,"%d",&interfaces[i][j].prix);
        }
    }

}
J'ai alors une erreur a la compilation l'allocation de la memoire



mercredi 1 février 2006 à 16:38:41 | Re : struct ?

DeAtHCrAsH

tempNoeuds[i] = (NOEUDS *) malloc(sizeof(int)*4);

Shell

mercredi 1 février 2006 à 16:41:09 | Re : struct ?

DeAtHCrAsH

Oula j'ai zappé un truc :

tempNoeuds[i] = (NOEUDS *) malloc(sizeof(NOEUDS));

Shell

mercredi 1 février 2006 à 16:59:14 | Re : struct ?

tomalille

Bonjour et Merci,
j'ai oublie d'enlever cette ligne dans mon copier coller qui etait en commentaire a l'origine.
Mon erreur est au niveau de l'allocation de memoire dans la boucle


mercredi 1 février 2006 à 17:59:05 | Re : struct ?

bouba

Le problème est dans interface[i], l'opérateur [] fait que tu déréférences un pointeur, donc interface[i] n'est plus une adresse mais de type struct INTERFACENOEUD , réalises ceci à la place.
       
        interfaces+i = (struct INTERFACENOEUD *)malloc(sizeof(struct INTERFACENOEUD) * noeuds[i].nbTypes);

Bonne chance.
Bouba


mercredi 1 février 2006 à 18:23:50 | Re : struct ?

rclsilver02

Membre Club
je vois pas la déclaration de tempNoeuds ?! Bigleu ou j'ai raison ? :o

mercredi 1 février 2006 à 19:05:42 | Re : struct ?

tomalille

salut bouba et merci pour ta réponse,
je viens d'essayer ta solution et elle ne fonctionne pas j'ai l'erreur suivante:
invalid lvalue in assignment

Est-ce que la déclaration des structs est bonnes? :
struct NOEUDS{
int numNoeuds;
int coordX;
int coordY;
int nbInterfaces;
int coutSlots;
int nbTypes;
int *interfaces;
};

struct INTERFACENOEUD{
int nbCanaux;
int prix;
};

void lectureNoeuds(struct NOEUDS *noeuds,struct INTERFACENOEUD *interfaces)
{
   
    int i;
       
    for(i=0;i<nbNoeuds;i++)
    {   
        fscanf(fichierEntree,"%d",&noeuds[i].numNoeuds);
        fscanf(fichierEntree,"%d",&noeuds[i].coordX);
        fscanf(fichierEntree,"%d",&noeuds[i].coordY);
        fscanf(fichierEntree,"%d",&noeuds[i].nbInterfaces);
        fscanf(fichierEntree,"%d",&noeuds[i].coutSlots);
        fscanf(fichierEntree,"%d",&noeuds[i].nbTypes);
        
        interfaces+i = (struct INTERFACENOEUD *)malloc(sizeof(struct INTERFACENOEUD) * noeuds[i].nbTypes);

        for(j<0;j<noeuds[i].nbTypes;j++)
        {
            fscanf(fichierEntree,"%d",&interfaces[i][j].nbCanaux);
            fscanf(fichierEntree,"%d",&interfaces[i][j].prix);
        }
    }

}

mercredi 1 février 2006 à 19:50:27 | Re : struct ?

bouba

Oui, il faut passer par une variable temporaire, une lvalue <=> une seule "variable", donc ne peut pas être la somme de deux "variables". void lectureNoeuds(struct NOEUDS *noeuds,struct INTERFACENOEUD *interfaces) { int i; struct INTERFACENOEUD *tmp; ... ... tmp = interfaces+i; tmp = (struct INTERFACENOEUD *)malloc(sizeof(struct INTERFACENOEUD) * noeuds[i].nbTypes); interfaces = tmp; ... ...



Cette discussion est classé dans : int, noeuds, struct, fscanf, fichierentree


Répondre à ce message

Sujets en rapport avec ce message

struct [ par tomalille ] Bonsoir, j'ai un probleme l'utilisation de structs: Voici une partie de mon code: void lectureNoeuds(struct NOEUDS *noeuds,struct INTERFACENOEUD **int pb avec des structures [ par tomalille ] Bonjour, j'ai un probleme avec l'utilisation de structure. Je declare mon struct en globale, je l'utilise ensuite dans une procedure qui remplit un ta pb de progr [ par airwann ] bonjour,j ai un pb ds mon code (je ne suis pas un expert) mais là je ne vois pas ou ça plante ..////////////////////////////////////////////////////// Trier une structure indexée [ par RootASM ] Bonjour,J'ai écrit un programme qui permet de faire des recherches, ajout, suppression sur une liste de membres.Je dois trier cette liste de nom, lors ajout d'un element à la fin d'une liste chainée [ par beatkof ] bonsoir je voudrai faire une fonction qui ajout un element à la fion d'une liste chainée et je n'y arrive pas voila ma fonction: #include #include s Liste chainée [ par popoff971 ] Bonjour,Dans le cadre d'un TP en info je dois créer un réseau de ligne de métro.je me suis mis en tete d'utiliser les liste chainée pour cela mais je filemapping et un peu plus [ par PADYVEN ] bonjour,bon j'ai un probleme tout simple je pense qui concerne le file mappingje veux partager des données entre deux applicationsc'est données sont e insertion dans structure [ par angebrune8 ] Bonjour,j'essaie de faire une insertion dans une structure mais ca ne marche pas comme je le souhaite: int main(void){ srand((int)time(NULL) Struct [ par wxccxw ] salut, je fait un jeu, et j'utilise pour le server une struct qui contiendra quelque info sur le joueur.j'ai deux fonction  :PlayerActivate()  // pour probleme affichage structure [ par lil_adriano ] Slt tous le monde j'ai un souci avec l'affichage de mes structures. je dois faire la gestion d'une pizzeria.j'ai cree les structure et quelques proced


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,796 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.