begin process at 2010 02 10 05:48:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

struct ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

struct ?

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ée 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 ..////////////////////////////////////////////////////// Sauvegarde d'une struct complexe vers fichier possible ? [ par nomisch ] Salut ! Dans le cadre d'un de mes projets en c++, j'ai besoin de sauvegarder la structure [b]Particle[/b] afin de pouvoir la recharger lors du redéma 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 [C] Lire un fichier . txt URGENTISSIME [ par jovenix ] Bonjour, J'ai suivit des cours basique de programation en language C et j'ai un projet à rendre pour lundi matin !! Aucun probléme pour ECRIRE mais je 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 pointeur de structure contenant un pointeur [ par PADYVEN ] bonjour; voila  je voudrait progresser un peu en pointeur donc j'ai une structure disont toto struct toto { 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


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales