Problème d'attribution de valeur à une structure

Problème d'attribution de valeur à une structure - C - Programmation

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
Reply

Marsh Posté le 31-12-2008 à 12:11:14   

Reply

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

Reply

Marsh Posté le 31-12-2008 à 17:08:47    

pour name, strcpy

Reply

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 :
  1. struct Cowboy {
  2.     char Name[100];
  3.     int Poids;
  4.     int Speed;
  5. };

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed