Parser un fichier
Hors ligneK@dor Le 16/05/2006 à 14:20 Profil de K@dor Configuration de K@dor

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;
}


Hors ligneAnthony Le 16/05/2006 à 22:51 Profil de Anthony Configuration de Anthony

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);
}
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels