gluff
Messages postés8Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention 1 mai 2007
-
26 nov. 2006 à 16:19
gluff
Messages postés8Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention 1 mai 2007
-
26 nov. 2006 à 23:42
Bonjour,
je n'arrive pas a remplir des strucutures a partir de la lecture d'un fichier.
Dans le fichier sont contenus un liste de nom de personne et un numéros correspondant a leur génération (1,2,3, ect...), je voudrais rentré le nom dans le champ nom de la structure NOEUD et le numéros dans gen, mais j'y arrive pas...
Une cela fait il faudra que je crée des liens entre les différente structure et là je galère aussi.
Voici un bout de code si vous pouviez m'éclairer.
Merci d'avance.
main()
{
FILE *pfichier;
pfichier=fopen("arbre.txt","r");
//il faut ouvrir le fichier ds la fct,c mieux
char temp1;
int temp2;
int temp3;
int i;
struct NOEUD *pcour;
while(!feof(pfichier))
{
fscanf(pfichier,"%s %d",&temp1,&temp2);
//on fait des enfants par generation ptg
NOEUD*ptg=NULL;
ptg= (NOEUD*)malloc(sizeof(NOEUD));
(pcour->Nom)=&temp1;
(pcour->gen)=&temp2;
pcour->ptg=ptg;
pcour=ptg;
}
gluff
Messages postés8Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention 1 mai 2007 26 nov. 2006 à 16:58
Merci je vois le probleme, mais je ne sais pas le résoudre . J'ai un probleme avec les structutres et les pointeurs (enfaite les pointeurs dans les structures je supporte pas)
du coup si je change ca en passant les pointeur nom et gen directement en variable(voir ) , mais du coup *(pcour->Nom)=temp1;*(pcour->gen)=temp2; est faux ? (voir ;)
ou alors je peux essayé d'alloue nom en le laissant en pointeur : voir plus bas
NOEUD*Nom=NULL;
Nom= (char*)malloc(sizeof(char));
main()
{
FILE *pfichier;
pfichier=fopen("arbre.txt","r");
//il faut ouvrir le fichier ds la fct,c mieux
char temp1[10];
int temp2;
int temp3;
int i;
struct NOEUD *pcour;
while(!feof(pfichier))
{
fscanf(pfichier,"%s %d",&temp1,&temp2);
//on fait des enfants par generation ptg
NOEUD*ptg=NULL;
ptg= (NOEUD*)malloc(sizeof(NOEUD));
*(pcour->Nom)=temp1;
*(pcour->gen)=temp2;
pcour->ptg=ptg;
pcour=ptg;
}
}
///////////////////////////////////************************************/////////////////////////////////////////////////////
ou alors je peux essayé d'alloue nom en le laissant en pointeur :
typedef struct NOEUD
{
char *Nom;
int *gen;
struct NOEUD *pere;
struct NOEUD *ptg;
struct NOEUD *ptd;
}NOEUD;
main()
{
FILE *pfichier;
pfichier=fopen("arbre.txt","r");
//il faut ouvrir le fichier ds la fct,c mieux
char temp1[10];
int temp2;
int temp3;
int i;
struct NOEUD *pcour;
while(!feof(pfichier))
{
fscanf(pfichier,"%s %d",&temp1,&temp2);
//on fait des enfants par generation ptg
NOEUD*ptg=NULL;
ptg= (NOEUD*)malloc(sizeof(NOEUD));
NOEUD*Nom=NULL;
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201625 26 nov. 2006 à 17:14
2 solutions :
si pointeur dans la structure (char* nom) on passe par un buffer pour la lecture dans fichier
puis on alloue avec la taille du buffer
pNoeud->nom = (char*)malloc(strlen(buffer)+1);
puis on copie;
strcpy(pNoeud->nom, buffer);
ou le nom est toujours de taille fixe dans la structure
#define TAILLE_NOM 32
struct
{
char nom[TAILLE_NOM];
}
gluff
Messages postés8Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention 1 mai 2007 26 nov. 2006 à 18:14
Merci je crois que ca marche enfin mais g un pb tout con de pauvre debutant :
quand je lance le programme la fenetre se ferme tout de suite et on a pas le temp de voir ce qui y est écrit...comment on fait?
gluff
Messages postés8Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention 1 mai 2007 26 nov. 2006 à 18:47
J'ai peur d'etre chiant mais je comprend pas
j'ai rajouter:
System("pause");
et ca marchait pas alors aprés de recherche j'ai vu qu'il fallait iostream
alors
j'ai rajouter:
#include ou #include
System("pause");
et devc++ me dit qu'il trouve pas iostream...et je le trouve pas sur internet....
Merci
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201625 26 nov. 2006 à 20:47
Quant tu installes un compilateur il faut parametrer des variables d'environnement pour qu'il puisse trouver les LIB, INCLUDE, ect...
Sinon il faudrait que tous les fichiers soient dans le rep courant !
Donc dans ton cas, il faut ajouter dans tes vars d'env. :
Set PATH=chemin vers compilateur
Set LIB=chemin vers lib
Set INCLUDE=chemin vers include