Oublie total...

Le
Mick
Bonjour,
on me demande un petit prog en c mais ca fait des lustres que je n'en ai
plus fais.

Alors ma question.
J'ai un fichier txt avec une list de string
En fait, il stock une liste de x structure de 23 string séparé par des ";"

champs1:champs2;3;4;5;6;7;8;9;10.
champs1:champs2;3;4;5;6;7;8;9;10.


Comment lire ces données.
Un while not feof, read chaque structure et la stocker dans une structure
temporaire.

Merci de votre aide.
Vos réponses
Trier par : date / pertinence
Pierre Maurette
Le #874939
Bonjour,
on me demande un petit prog en c mais ca fait des lustres que je n'en ai
plus fais.

Alors ma question.
J'ai un fichier txt avec une list de string...
En fait, il stock une liste de x structure de 23 string séparé par des ";"

champs1:champs2;3;4;5;6;7;8;9;10....
champs1:champs2;3;4;5;6;7;8;9;10....


Comment lire ces données.
Un while not feof, read chaque structure et la stocker dans une structure
temporaire.
Il vaudrait mieux poster sur fr.comp.lang.c

Le code va dépendre de la confiance que vous pouvez mettre dans la
structure du fichier texte, de la portabilité souhaitée également peut-être.
Mon adresse est valide, si vous voulez me mailer un fichier exemple et
ce qu'il faut en sortir, je vous ferai un squelette, l'exercice m'intéresse
--
Pierre

Fabien
Le #874725
Mick wrote:
Bonjour,
on me demande un petit prog en c mais ca fait des lustres que je n'en ai
plus fais.

Alors ma question.
J'ai un fichier txt avec une list de string...
En fait, il stock une liste de x structure de 23 string séparé par des ";"

champs1:champs2;3;4;5;6;7;8;9;10....
champs1:champs2;3;4;5;6;7;8;9;10....


Comment lire ces données.
Un while not feof, read chaque structure et la stocker dans une structure
temporaire.

Merci de votre aide.




Bonjour,

Je proposerais l'utilisation de fgets pour lire les lignes une à une et
de strtok pour casser chaque enregistrement et reconsitituer la
structure... C'est le plus simple, mais un bémol tout de même, fgets ne
doit être utilisée que si tu connais la taille maximale des chaînes à
coup sûr... sinon, risque (gros) d'overflows...

@+ Fabien

kanze
Le #876603
Fabien wrote:
Mick wrote:

on me demande un petit prog en c mais ca fait des lustres que je
n'en ai plus fais.

Alors ma question. J'ai un fichier txt avec une list de string...
En


fait, il stock une liste de x structure de 23 string séparé par
des


";"

champs1:champs2;3;4;5;6;7;8;9;10....
champs1:champs2;3;4;5;6;7;8;9;10....

Comment lire ces données.
Un while not feof, read chaque structure et la stocker dans une
structure


temporaire.


Je proposerais l'utilisation de fgets pour lire les lignes une à une
et de strtok pour casser chaque enregistrement et reconsitituer la
structure... C'est le plus simple, mais un bémol tout de même,
fgets

ne doit être utilisée que si tu connais la taille maximale des
chaînes

à coup sûr... sinon, risque (gros) d'overflows...


S'il a posté dans fclc++, on peut supposer qu'il cherche une solution
C++. Et getline(), puis un istringstream et getline() avec ';' comme
deuxième paramètre, me semble tout à fait indiqué.

En C, évidemment, il peut faire la même chose avec fgets pour la
première getline, puis sscanf pour la deuxième. La fonction strtok
est à
éviter.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


drkm
Le #877511
Fabien
Je proposerais l'utilisation de fgets pour lire les lignes une à une et
de strtok pour casser chaque enregistrement et reconsitituer la
structure... C'est le plus simple, mais un bémol tout de même, fgets ne
doit être utilisée que si tu connais la taille maximale des chaînes à
coup sûr... sinon, risque (gros) d'overflows...


Pourquoi ne pas utiliser tout simplement std::getline(),
std::string, std::string::find(), et std::string::substr() ? Pourquoi
passer par un std::FILE ?

--drkm

Andre Heinen
Le #879619
On 12 Dec 2004 23:37:42 -0800, wrote:

La fonction strtok est à éviter.


Pourquoi?

--
André Heinen
Mon e-mail, encodé ROT13: n qbg urvara ng rhebcrnayvax qbg pbz
La FAQ: http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/

Falk Tannhäuser
Le #879375
Andre Heinen wrote:
On 12 Dec 2004 23:37:42 -0800, wrote:
La fonction strtok est à éviter.
Pourquoi?



Il y a quelques années, (j'étais jeune !) j'ai écrit une
fonction comme cela :


void parse(char* str)
{
for(char* tok = strtok(str, ":");
tok != NULL;
tok = strtok(NULL, ";,"))
{
fais_qch_avec(tok);
}
}

Ça marchait à merveille, jusqu'au jour où dans fais_qch_avec(),
je rajoutais un appel à une fonction qui appelait une fonction
qui ... qui elle aussi utilisait strtok() pour parser une autre
chaîne de caractères (et qui elle aussi marchait nickel jusque là) ...

Cela n'était même pas une appli "multithread" !

En C++, maintenant on pourrait utiliser std::string::find_first_of()
afin de réécrire cette boucle.

Falk


Publicité
Poster une réponse
Anonyme