Rechercher : dans
Par :

Lire dans un fichier avec fscanf (langage C)

Dernière réponse le 25 oct 2002 à 16:20:39 Xray063, le 24 oct 2002 à 19:34:49 
 Signaler ce message aux modérateurs

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 !

Meilleures réponses pour « Lire dans un fichier avec fscanf (langage C) » dans :
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Caractéristiques du langage C++ VoirLe fichier source Le fichier source d'un programme écrit en langage C++ est un simple fichier texte dont l'extension est par convention .CPP. Ce fichier source doit être un fichier texte non formaté, c'est-à-dire un fichier texte dans sa plus...
Caractéristiques du langage C VoirLe fichier source Le fichier source d'un programme écrit en langage C est un simple fichier texte dont l'extension est par convention .c. Note d'un visiteur (J.Grondin) : L'extension est en minuscules. Le .C (majuscule) est interprété par...

1

 jisisv, le 25 oct 2002 à 16:20:39

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.

Répondre à jisisv