|
Salut,
IL faut que je parse un fichier pour ne garder que les adresses IP
j'ai fait le parsing de cette manière
Mon fichier pour le teste est le suivant :
1 192.168.0.1 9.754 ms 9.461 ms 8.046 ms
2 195.6.244.14 60.885 ms 48.924 ms 90.517 ms
3 194.206.126.244 50.503 ms 48.97 ms 120.122 ms
4 194.206.126.2 55.655 ms 52.213 ms 58.908 ms
5 208.213.229.130 588.303 ms 589.843 ms 589.611 ms
6 208.213.229.129 599.564 ms 599.763 ms 600.749 ms
7 208.213.229.226 629.167 ms 599.284 ms 599.383 ms
8 195.10.40.34 599.152 ms 599.289 ms 631.011 ms
9 157.130.34.217 642.326 ms 715.072 ms 653.724 ms
10 146.188.160.62 595.143 ms 590.433 ms 659.247 ms
11 146.188.160.181 649.863 ms 700.901 ms 617.067 ms
12 137.39.253.86 600.835 ms 599.379 ms 590.867 ms
13 192.48.96.9 607.071 ms 589.221 ms 603.156 ms
et en sortie, j'obtiens ceci :
1
195.6.244.14
194.206.126.244
194.206.126.2
208.213.229.130
208.213.229.129
208.213.229.226
195.10.40.34
157.130.34.217
146.188.160.62
146.188.160.181
137.39.253.86
192.48.96.9
Il y a un problème au niveau de la première ligne car elle n'est pas affichée correctement
ESt-ce que quelqu'un saurait pourquoi?
Je voudrais savoir également savoir comment il faut que je m'y prenne pour ne pas prendre en compte les * * * qui apparaissent parfois dans les traceroute ainsi que ces plages d'adresses IP :
10.0.0.0 à 10.255.255.255
172.16.0.0 à 172.31.255.255
192.168.0.0 à 192.168.255.255
224.0.0.0 à 239.255.255.255
240.0.0.0 à 255.255.255.255
Merci
Voici mon code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
FILE * file = fopen("fichier","r");
int a,b,c,d;
char * espace;
if(file == NULL){
perror("erreur de lecture");
exit(-1);
}
while(fgets(buffer, sizeof buffer, file) != NULL){
espace = strtok(buffer, " ");
if(espace == NULL)
{
perror("strtok");
exit(-1);
}
fscanf(file, "%d.%d.%d.%d", &a, &b, &c, &d);
printf("%s\n",buffer);
}
return 0;
}
|
 Admin |
Salut,
si tu mets un %s à la place de tous les %d.%d, etc... ça donne quoi ?
si j'étais toi je passerais par un
char * chaine;
while(!feof(file))
{
ici ton fscanf(file,"%s",chaine);
}
-- 
|