Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur parcours d'un fichier

1 réponse
Avatar
pasdespam-stealth
Bonjour,

J'ai un erreur que je ne comprend pas,lorsque j'essaye de parcourir un
fichier texte.

Voici le code:
fseek( fichier, 0, SEEK_SET);
while (fgets(dest, sizeof(dest), fichier)!=NULL)
{
syslog_write(U_INF,"Trap 3:%s", dest);
if (strcmp(dest,ipdest) == 0)
{
syslog_write(U_INF,"OK");
}
else
{
syslog_write(U_INF, "No rules for :%s",ipdest);
}
}

Voici le fichier texte:

toto
10.1.23.2
10.1.1.1
10.2.26.23

etc ...

Et mon résultat
Fred Trap 2 dest:10.2.26.23
Trap 3:10.1.23.2
No rules for :10.1.23.2
Trap 3:10.1.1.1
No rules for :10.1.1.1
Trap 3:10.2.26.23
No rules for :10.2.26.23

Etc ...

Je me demande pourquoi je ne rentre pas dans ma boucle if, en effet même
si dest==ipdest
je me retrouve dans else

Merci d'avance

--
Posté via http://www.webatou.net/
Usenet dans votre navigateur !
Complaints-To: abuse@webatou.net

1 réponse

Avatar
Charlie Gordon
"Frederic-B" wrote in message
news:

J'ai un erreur que je ne comprend pas,lorsque j'essaye de parcourir un
fichier texte.

Voici le code:
fseek( fichier, 0, SEEK_SET);
while (fgets(dest, sizeof(dest), fichier)!=NULL)


fgets() lit une ligne du fichier dans dest, jusqu'à et y compris le n final.
tu ne l'enlèves pas de dest.
donc si tu compares à une "10.1.23.2" c'est pas identique.

en fait ce serait plus sur de supprimer les blancs (isspace()) en debut et fin
de ligne :

char *p, *q;
for (p = dest; isspace(*p); p++)
continue;
for (q = dest + strlen(dest); q > dest && isspace(q[-1]); q--)
continue;
memmove(dest, p, q - p);
dest[q - p] = '';

ce code devrait d'ailleurs faire l'objet d'une fonction char *trimspaces(char
*s) qui pourrait servir ailleurs.

--
Chqrlie.