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

khalidlyon Messages postés 28 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 14 août 2007 - 4 juil. 2003 à 17:01
khalidlyon Messages postés 28 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 14 août 2007 - 5 août 2007 à 11:03
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 juil. 2003 à 17:16
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...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 juil. 2003 à 17:33
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...
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
4 juil. 2003 à 20:41
et le teste pf == NULL ?

mais non je rigole !
:-p :sleepy) :shy) :sleepy) :-p
0
khalidlyon Messages postés 28 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 14 août 2007
7 juil. 2003 à 09:28
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
khalidlyon Messages postés 28 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 14 août 2007
5 août 2007 à 11:03
[font=Times New Roman]Ensemble pour la scienceNew Roman
0
Rejoignez-nous