Lire dans un fichier avec fscanf (langage C)

Xray063 Messages postés 44 Statut Membre -  
jisisv Messages postés 3678 Statut Modérateur -
J'ai un gros soucis : en fait je veux lire des données dans un fichier mais le problème, c'est que le prof, pour nous emmerder, nous a imposé un formatage (dans le fichier) de ce type :

Sommet1,Sommet2,distance;
Sommet2,Sommet3,distance;

Sommet1 et Sommet2 sont des chaines de caractères et distance, un entier.

Le problème est donc qu'il y a une virgule entre chaque paramètre et un point-virgule à la fin d'une ligne (au lieu des espaces qui rendraient la tache beaucoup plus simple !)
Je pensais que la , et ; étaient des séparateurs mais ca a pas l'air de fonctionner... Voilà ce que g tapé :

fscanf(fe,"%s,%s,%d;"Sommet1,Sommet2,&distance);

En fait, toute la ligne (dans le fichier) est stockée dans la première variable "Sommet1".
J'ai essayé de remplacer , et ; par des espaces dans la commande scanf mais rien à faire

QQ'un saurait-il comment faire siouplé ?
Merci !

1 réponse

  1. jisisv Messages postés 3678 Statut Modérateur 936
     
    J'ai essay un truc du genre:
    char st1[MAX_LEN], st2[MAX_LEN];
    unsigned in len;
    ....
    ....
    while(fscanf(filorg, "%[^,],%[^,],%u\n", st1, st2, &len) >0 )
    {
    printf("Sommet1 : %s\t Sommet2 : %s\t Distance %d\n", st1, st2, len);
    }

    Cela donne un résultat mais je n'ai pas essayé tous les cas de figure.
    Regarder man fscanf

    Johan Daine
    The software said "Requires Windows98, Win2000, or better
    So I installed Unix.
    5