1

j'ai un fichier qui contient plusieurs elements par ligne
par exemple

arg11 arg12 arg13 arg14 arg15
arg21 arg22 arg23 arg24 arg25
...
etc

j'aimerais pouvoir analyser un part un chaque argument, jusqu'a present j'utilise fgets pour recuperer ligne par ligne, ensuite le programme analyse chaque ligne
n'y a t-il pas moyen de recuperer directement chaque argument ? il me semble que la fonction fscanf le permettrais mais je n'arrive pas a m'en servir, ni a comprendre vraiment comment elle fonctionne

2

fscanf s'utilise comme scanf oui

3

la vache je nage

a chaque appel de fscanf on passe a la ligne automatiquement ?

4

si tu fais tes lectures avec fgets(), tu peux toujours tenter un sscanf() sur les lignes lues...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

5

ok, je garde ça sous la main, si je fscanf ne me satisfait pas

comment sont gerées les lignes dans un fichier texte, il y a un marqueur de fin de ligne a chaque fois ?

si je fais 3 appels de fscanf ("%s%s%s%s%s",arg1, arg2, arg3, arg4, arg5);
A chaque fois le fscanf traduit une ligne suivante ? ou il reste sur la même ligne tant qu'il ne la pas toute parcourue ?

6

Il reste sur la même ligne tant qu'il ne l'a pas parcourue.
fgets() fait la même chose, d'ailleurs, c'est pourquoi il est d'usage de vérifier si fgets() a récupéré une ligne complète ou non, en vérifiant s'il y a ou non un \n dans la chaîne...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

7

en fait pour fgets je lui demande de parcourir une ligne entiere, definie selon un nbre de caractere

je crois que je vais utiliser fgets et scanf alors, ça va simplifier la suite du programme

8

C'est sscanf() qui s'utilise avec fgets().
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

9

Mais ça n'a aucun intérêt par rapport à fscanf directement. A part être plus lent.

10

Obza_Fazer :
fscanf ("%s%s%s%s%s",arg1, arg2, arg3, arg4, arg5);


Faire ca ne recuperera pas une ligne entiere a chaque argn il me semble, vu que le fscanf prend comme separateur de chaine les espaces et les fin de lignes.

Si tu veux recuperer les nombres sur chaque ligne, essaye de faire:
fscanf(Fichier,"%f %f %f %f %f\n",&arg1,&arg2,&arg3,&arg4,&arg5);

sans oublier les espaces entre chaque %f et le \n a la fin. les arg1.. sont de type double. Il me semble que ca marchera comme ca.
N/A