Lire dans un fichier avec fscanf (langage C)

Fermé
Xray063 Messages postés 44 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 15 décembre 2002 - 24 oct. 2002 à 19:34
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 - 25 oct. 2002 à 16:20
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 !
A voir également:

1 réponse

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
25 oct. 2002 à 16:20
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