Tableau de pointeur en C (Problème)

Fermé
Kel - 26 oct. 2011 à 12:10
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 26 oct. 2011 à 18:33
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

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
26 oct. 2011 à 18:33
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