A voir également:
- Lire dans un fichier texte en C
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Fichier rar - Guide
- Lire fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
10 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 840
22 janv. 2008 à 08:36
22 janv. 2008 à 08:36
Salut,
Pourrais -tu poster ton code complet stp ? Et dire exactement, le problème que tu as à l'exécution (Ce que ça affiche à l'écran).
Cordialement
Pourrais -tu poster ton code complet stp ? Et dire exactement, le problème que tu as à l'exécution (Ce que ça affiche à l'écran).
Cordialement
voici ma fonction
void lire_fic()
{
FILE *fic;
int nboctet=0;
char* ligne;
char** c;
struct var tab[6];
int len=6;
fic = fopen (source, "r");
char** ptr;
char** ptr2;
char* str;
int i,sizeTab=0;
//si le fichier est trouve
if (fic)
{
//ligne="foo bar=12.0";
while (fgets(ligne,256, fic) != NULL)
{
printf("%s\n",ligne);
if(ligne!=NULL)
{
ptr2=split(ligne," ",0);
str=ptr2[1];
ptr=split(str,"=",0);
tab[0].nom=(char*)malloc(len*sizeof(char));
tab[0].adresse=(char*)malloc(len*sizeof(char));
tab[0].val=atof(ptr[1]);
printf("%f\n",tab[0].val);
tab[0].nom=ptr[0];
printf("%s\n",tab[0].nom);
tab[0].adresse=&(tab[0].val);
printf("0x%x\n",tab[0].adresse);
}
}
}
//free(ligne);
close(fic);
free(fic);
}
le problème est que ca n'affiche rien du tout ou plutot ca affiche mais je vois tien
et si je change le while (fgets(ligne,256, fic) != NULL)
par ligne="float bar=12.0"; tout ce que je veux est affiché
c'est bien pour ca que je demande de l'aide
void lire_fic()
{
FILE *fic;
int nboctet=0;
char* ligne;
char** c;
struct var tab[6];
int len=6;
fic = fopen (source, "r");
char** ptr;
char** ptr2;
char* str;
int i,sizeTab=0;
//si le fichier est trouve
if (fic)
{
//ligne="foo bar=12.0";
while (fgets(ligne,256, fic) != NULL)
{
printf("%s\n",ligne);
if(ligne!=NULL)
{
ptr2=split(ligne," ",0);
str=ptr2[1];
ptr=split(str,"=",0);
tab[0].nom=(char*)malloc(len*sizeof(char));
tab[0].adresse=(char*)malloc(len*sizeof(char));
tab[0].val=atof(ptr[1]);
printf("%f\n",tab[0].val);
tab[0].nom=ptr[0];
printf("%s\n",tab[0].nom);
tab[0].adresse=&(tab[0].val);
printf("0x%x\n",tab[0].adresse);
}
}
}
//free(ligne);
close(fic);
free(fic);
}
le problème est que ca n'affiche rien du tout ou plutot ca affiche mais je vois tien
et si je change le while (fgets(ligne,256, fic) != NULL)
par ligne="float bar=12.0"; tout ce que je veux est affiché
c'est bien pour ca que je demande de l'aide
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 840
22 janv. 2008 à 08:48
22 janv. 2008 à 08:48
Salut,
Je vois déjà des erreurs.
tab[0].nom=ptr[0] et pareil pour la ligne avec le champ adresse.
Tu dois utiliser la fonction strcpy.
Je vois déjà des erreurs.
tab[0].nom=ptr[0] et pareil pour la ligne avec le champ adresse.
Tu dois utiliser la fonction strcpy.
j'aç oublié de dire que j'avais un warning pour cette ligne là
tab[0].adresse=&(tab[0].val);
[Warning] assignment from incompatible pointer type
tab[0].adresse=&(tab[0].val);
[Warning] assignment from incompatible pointer type
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 840
22 janv. 2008 à 09:43
22 janv. 2008 à 09:43
Salut,
As-tu effectué comme j'ai dit plus haut des strcpy à la place des tab[0].adresse et tab[0].nom ?
Et sinon, poste ta structure var.
Cordialement
As-tu effectué comme j'ai dit plus haut des strcpy à la place des tab[0].adresse et tab[0].nom ?
Et sinon, poste ta structure var.
Cordialement
Bonjour
De plus, ton pointeur ligne n'est pas initialisé. Où le fgets va-t-il écrire en mémoire ?
Tu peux le remplacer par un tableau char ligne[257] ou le laisser en pointeur et l'initialiser avec un ligne=malloc(257,sizeof(char)) (et remettre le free à la fin)
De plus, ton pointeur ligne n'est pas initialisé. Où le fgets va-t-il écrire en mémoire ?
Tu peux le remplacer par un tableau char ligne[257] ou le laisser en pointeur et l'initialiser avec un ligne=malloc(257,sizeof(char)) (et remettre le free à la fin)
ma structure est:
struct var
{
float val;
char* nom;
unsigned char* adresse;
};
et j'ai changé mon bout de code par ca
tab[0].val=atof(ptr[1]);
strcpy(tab[0].nom,ptr[0]);
strcpy(tab[0].adresse,&(tab[0].val));
c'est ce que tu voulais me dire?
ca fait la même chose dès que j'utilise le while (fgets(ligne,256, fic) != NULL) ca plante
je me dis peut-être que c'est les malloc
struct var
{
float val;
char* nom;
unsigned char* adresse;
};
et j'ai changé mon bout de code par ca
tab[0].val=atof(ptr[1]);
strcpy(tab[0].nom,ptr[0]);
strcpy(tab[0].adresse,&(tab[0].val));
c'est ce que tu voulais me dire?
ca fait la même chose dès que j'utilise le while (fgets(ligne,256, fic) != NULL) ca plante
je me dis peut-être que c'est les malloc