Tableau de pointeur en C (Problème)

Kel -  
Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je vous remercie tout d'abord au temps que vous donner pour lire mon problème .

J'ai défini une structure :
typedef struct structure{
int entier1;
char caractere;
int entier2;
}Structure;
typedef Structure * structure_pt ;

Ce que je veux faire c'est lire quelque donnée dans un fichier et les stocker dans ma structure :
FILE * f;
f=fopen("fichier.txt","r");

/*
Pour précision mon fichier contient :
4 r 3
1 t 9
*/
structure_pt info[2];

for(i=0;i<2;++i)
{
fscanf(f,"%d %c %d",&(info[i]->entier1),&(info[i]->caractere),&(info[i]->entier2));
}
Mon problème est le suivant ,
fscanf me stock des valeurs bizzar, mais si je fais fscanf(f,"%d %c",&(info[i]->entier1),&(info[i]->caractere)); ça marche très bien .
JE ne comprends pas pourquoi ?
j'ai essayé d'allouer de la mémoire structure_pt info[2]=(structure_pt)malloc(sizeof(structure_pt)); ça marche pas .
Qu'est ce que je dois faire exactement ?!

Merci d'avance pour votre réponse .

1 réponse

  1. Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
     
    Bonjour,
    Structure est un type vous pouvez l'utiliser directement exemple:
    #include <stdlib.h>
    #include <stdio.h>
    
    typedef struct structure{
        int entier1;
        char caractere;
        int entier2;
    }Structure;
    
    int main(void)
      {
        Structure *ptr;
        ptr=malloc(sizeof(struct structure)*4);
        ptr[0].entier1 = 234;
        ptr[0].entier2 = 824;
        ptr[3].caractere = 'c';
        printf("%d %d %c",
                ptr[0].entier1,
                ptr[0].entier2,
                ptr[3].caractere);
        free(ptr);
        return 0;
      }
    
    0