Toujours lire fichier, je vais mourir acause de ça !!!!

Signaler
Messages postés
28
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
14 août 2007
-
Messages postés
28
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
14 août 2007
-
Ensemble pour la science

Bonjour,
suite a ma question "lire fichier au secours, et suite a votre réponses, voila ce que j'ai fais.
------------------------------------------------

FILE *pf;
char *ligne[50];
int dim_lu = 0;
float val;
int i = 0;

pf=fopen("test.dat","r");

while(fgets(ligne,50,pf)!=NULL)
{
if (ligne == "dim")
dim_lu = 1;
if (dim_lu == 1)
sscanf(pf,"%f",&ligne[i]);
i++;
}
------------------------------------------------------
mais le pb. je reçois qlq erreurs:

the referenced type of the pointer value "ligne" is "pointer to char", which is not compatible with "char". (ptrmismatch)
while(fgets(ligne,50,pf)!=NULL)
---------------^
cc: Warning: in this statement ""dim"" of type "pointer to char", is being converted to "pointer to pointer to char". (cvtdiftypes)
if (ligne == "dim")
-----------^
cc: Warning: this statement, the referenced type of the pointer value "pf" is "struct declared without a tag", which is not compatible with "const char". (ptrmismatch)
sscanf(pf,"%f",&ligne[i]);
----------------^

Est ce que vous pouvez m'aider une autre fois et me trouver une solution a ça SVP, car vraiment je suis bloqué, et je peux plus rien a faire depuis 20 jours.
Merci infiniment.
mon fichier
hhff
fgg
hth rsg
gg fgfg
gfg fsgs
dim
3
2.35
15.6
17.5

5 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
PRECISIONS: les fgets et trucs de ce genre, je fais que c'est bon, je ne pratique que win32 donc...

char *ligne[50]; tableau de pointeurs ???

FILE *pf;
char ligne[50]; // ira mieux, tableau de 50 octets
int dim_lu = 0;
float val;
int i = 0;

pf=fopen("test.dat","r");

while(fgets(ligne,50,pf)!=NULL)
{
if (*((unsigned int *)ligne) == 0xD6D6964)
sscanf(pf,"%f",&ligne[i]);
i++;
}

BruNews, ciao...
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
alors je suis alle voir, le fgets ne lit pas ligne par ligne alors ce que je t'ai mis n'ira pas.
Ta methode n'ira jamais, exemple si le 'd' se trouve en postion 49 dans le fichier tu ne verras jamais 'dim' en entier dans le buffer ligne.
Methode qui va bon:
Aspire tout dans un buffer, place 2 pointeurs, c et d, au debut du buffer. A chaque tour, et tant que non fin du buffer, verifie que les 4 octets en partant de c valent bien 'dim\r' avance d jusque nouvelle ligne(position du prochain \n + 1, si c a verifie bon ok, sinon c = d et on boucle.
BruNews, ciao...
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
et le teste pf == NULL ?

mais non je rigole !
:-p :sleepy) :shy) :sleepy) :-p
Messages postés
28
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
14 août 2007

Re bonjour, Merci pour votre aide, le pb. que je sais faire ce que Vous m'avez dit, de plus le code que vous m'avez donner je sais pas ou sa vient, car au lieu de "dim" moi j'ai "$POINTS".
est ce que je peux avoir un code SVP sur langage C.
Merci infiniment, et je m excuse car je vous dérange mais je suis vraiment bloqué.
merci une autre fois.
Messages postés
28
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
14 août 2007

[font=Times New Roman]Ensemble pour la scienceNew Roman