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
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 ";"
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
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
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 ";"
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
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 ";"
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...
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
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
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
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
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
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
Fabien writes:
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
Fabien <fabien.kocik@wwstri.org> writes:
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 ?
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
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/
On 12 Dec 2004 23:37:42 -0800, kanze@gabi-soft.fr 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/
-- 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
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
Andre Heinen wrote:
On 12 Dec 2004 23:37:42 -0800, kanze@gabi-soft.fr 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.
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.