Problème d'attribution de valeur à une structure - C - Programmation
Marsh Posté le 31-12-2008 à 13:31:11
à locker j'ai trouvé la réponse, il faut passer par atoi pour le Poids et Speed, mais j'ai toujours pas trouvé pour Name
Marsh Posté le 31-12-2008 à 19:53:38
Hmm, sans oublier le petit malloc avant pour éviter le segfault. Ou changer la déclaration de struct Cowboy en :
Code :
|
Marsh Posté le 31-12-2008 à 12:11:14
Bonjour,
j'ai un soucis en C, j'ai créer une structure assez simple,
struct Cowboy {
char* Name;
int Poids;
int Speed;
};
et j'ai un programme qui parcours un fichiers .txt et qui remplis mon talbeau de structure seulement il le remplit n'importe comment, il a l'air de mettre les adresses et pas le contenu: (end c'est la taille max du tableau)
struct Cowboy *read(int end){
FILE *fichier;
fichier=fopen("cowboys.txt","r" );
int i;
struct Cowboy *l=(struct Cowboy*)calloc(end,sizeof(struct Cowboy));
for (i=0; i<end; i++)
{
char a[100];
fgets(a, sizeof a,fichier);
l[i].Name=a;
int *b;
fgets(&b, sizeof b,fichier);
l[i].Poids=b;
int *c;
fgets(&c,sizeof c,fichier);
l[i].Speed=c;
}
return l;
}
voilà le contenu de cowboys.txt:
lukcy luke
50
30
Joe
45
25
je teste tout ca avec un programme qui affiche le contenu d'un tableau de struct Cowboy:
void affiche(struct Cowboy l[], int end){
int i;
for (i=0; i<end; i++)
{
printf("nom: %s\n",l[i].Name);
printf("poids: %d\n",l[i].Poids);
printf("vitesse: %d\n",l[i].Speed);
}
printf("\n\n" );
}
et voilà la fonction main... (au début c'est pour tester la fonction affiche qui à l'air d'être correcte)
int main(){
struct Cowboy m[2];
m[0].Name="totototototototti";
m[0].Poids=65;
m[0].Speed=35;
m[1].Name="titi";
m[1].Poids=75;
m[1].Speed=20;
affiche(m,2);
system("PAUSE" );
affiche(read(2),2);
printf("end\n" );
system("PAUSE" );
return 0;
}
merci par avance des réponses que vous pourriez m'apporter.
Message édité par Haelle le 31-12-2008 à 13:20:59