> Bonjour à tous et merci pour vos réponses qui m'ont permis d'avancer
> D'ailleurs j'ai bien été obligé de partir de zéro :
> Questions
> 1/Voila donc j'ai toujours mon fichier texte.Et je veux verifier qu
> si une ligne commence par "ouistiti", je fais ainsi ==> i
> (!strncmp(ligne, "ouistiti", 8)
>
> /* La ligne commence bien par ouistiti *
>
> Est-ce que cela convient ?
C'est à peine passable
. Il faut être sûr que ligne + 7 est adressable, ou au moins que l
ligne fasse 8 ou 9 bytes
. Mettre 8 de manière littérale n'est pas bon, parce que si tu change
'ouistiti' par 'chimpanzé', il va falloir répercuter la modif un pe
partout, il y a des dolutions pour simplifier la vie
J'ai cherché et je n'ai pas trouvé ces fameuses solutions?
Autre question
Je veux ecrire dans le fichier la valeur d'une variable, je fais ainsi mais ca va pas
fputs(("language=%ld\n", lang), fOut)
Merc
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Harpo
Ranny wrote:
if
(!strncmp(ligne, "ouistiti", 8)) { /* La ligne commence bien par ouistiti */ } Est-ce que cela convient ??
C'est à peine passable. . Il faut être sûr que ligne + 7 est adressable, ou au moins que la ligne fasse 8 ou 9 bytes. . Mettre 8 de manière littérale n'est pas bon, parce que si tu changes 'ouistiti' par 'chimpanzé', il va falloir répercuter la modif un peu partout, il y a des dolutions pour simplifier la vie.
Essaie de quoter correctement, on ne discerne pas ce que tu écris du message auquel tu réponds.
J'ai cherché et je n'ai pas trouvé ces fameuses solutions??
... if ( ! strncpm( ligne, SINGE, SINGE_SIZE ) ) Mais je pense que strcmp() aurait fait l'affaire.
Autre question: Je veux ecrire dans le fichier la valeur d'une variable, je fais ainsi mais ca va pas? fputs(("language=%ldn", lang), fOut); Merci
("langage=%ldn", lang) n'est pas une expression du langage qui donne ce que tu imagines, ce n'est pas le langage proprement dit qui peut faire la conversion et la substitution de lang dans la chaîne. Des fonctions prévues pour peuvent le faire, ici tu aurais du utiliser fprintf() fprintf( fOut, 'langage=%ldn", lang );
-- http://harpo.free.fr/
Ranny wrote:
if
(!strncmp(ligne, "ouistiti", 8))
{
/* La ligne commence bien par ouistiti */
}
Est-ce que cela convient ??
C'est à peine passable.
. Il faut être sûr que ligne + 7 est adressable, ou au moins que la
ligne fasse 8 ou 9 bytes.
. Mettre 8 de manière littérale n'est pas bon, parce que si tu changes
'ouistiti' par 'chimpanzé', il va falloir répercuter la modif un peu
partout, il y a des dolutions pour simplifier la vie.
Essaie de quoter correctement, on ne discerne pas ce que tu écris du
message auquel tu réponds.
J'ai cherché et je n'ai pas trouvé ces fameuses solutions??
...
if ( ! strncpm( ligne, SINGE, SINGE_SIZE ) )
Mais je pense que strcmp() aurait fait l'affaire.
Autre question:
Je veux ecrire dans le fichier la valeur d'une variable, je fais ainsi
mais ca va pas? fputs(("language=%ldn", lang), fOut);
Merci
("langage=%ldn", lang)
n'est pas une expression du langage qui donne ce que tu imagines, ce
n'est pas le langage proprement dit qui peut faire la conversion et la
substitution de lang dans la chaîne.
Des fonctions prévues pour peuvent le faire, ici tu aurais du utiliser
fprintf()
fprintf( fOut, 'langage=%ldn", lang );
(!strncmp(ligne, "ouistiti", 8)) { /* La ligne commence bien par ouistiti */ } Est-ce que cela convient ??
C'est à peine passable. . Il faut être sûr que ligne + 7 est adressable, ou au moins que la ligne fasse 8 ou 9 bytes. . Mettre 8 de manière littérale n'est pas bon, parce que si tu changes 'ouistiti' par 'chimpanzé', il va falloir répercuter la modif un peu partout, il y a des dolutions pour simplifier la vie.
Essaie de quoter correctement, on ne discerne pas ce que tu écris du message auquel tu réponds.
J'ai cherché et je n'ai pas trouvé ces fameuses solutions??
... if ( ! strncpm( ligne, SINGE, SINGE_SIZE ) ) Mais je pense que strcmp() aurait fait l'affaire.
Autre question: Je veux ecrire dans le fichier la valeur d'une variable, je fais ainsi mais ca va pas? fputs(("language=%ldn", lang), fOut); Merci
("langage=%ldn", lang) n'est pas une expression du langage qui donne ce que tu imagines, ce n'est pas le langage proprement dit qui peut faire la conversion et la substitution de lang dans la chaîne. Des fonctions prévues pour peuvent le faire, ici tu aurais du utiliser fprintf() fprintf( fOut, 'langage=%ldn", lang );
-- http://harpo.free.fr/
Antoine Leca
En news:43e1b7a3$0$19710$, Harpo va escriure:
Mais je pense que strcmp() aurait fait l'affaire.
J'y ai pensé aussi, mais je n'ai pas trouvé. Le problème c'est qu'après avoir parcouru tout le ouistiti, avec strcmp() il n'y a pas de moyen de dire que c'est bon, on s'arrête là, cela ne nous intéresse pas de savoir si le caractère qui suit le ouistiti soit (strcmp() retourne 0) ou quoique ce soit d'autre (strcmp() retourne une valeur positive...
<DIGRESSION pour_débutant="non"> En fait il y a une fonction qui fait cela (à condition toutefois qu'il n'y ait pas d'espace dans le mot cherché, ou bien que l'on ne s'intéresse pas à la concordance de leur nombre): c'est sscanf(src, "ouistiti"). Mais il y a deux inconvénients majeurs : le premier, c'est que scanf() est généralement une mauvaise idée, tant à cause des possibilités d'erreurs de manipulation, que par les multiples possibilités de bogues présentes dans les implémentations. Le second, c'est que sscanf(src, "ouistiti") tel quel retourne toujours 0, ce qui n'est pas passionnant : il faut écrire un truc du genre int longlue; /* ... */ if( sscanf(src, "ouistiti" "%n", &longlue) == 1 ) /* OK, on a lu tout le ouistiti */
ce qui est d'une toute autre complexité, même si on récupère gratuitement au passage la taille du ouistiti, qui équivaut à la position de ce qui suit (src+longlue). </DIGRESSION>
Antoine
En news:43e1b7a3$0$19710$8fcfb975@news.wanadoo.fr, Harpo va escriure:
Mais je pense que strcmp() aurait fait l'affaire.
J'y ai pensé aussi, mais je n'ai pas trouvé.
Le problème c'est qu'après avoir parcouru tout le ouistiti, avec strcmp() il
n'y a pas de moyen de dire que c'est bon, on s'arrête là, cela ne nous
intéresse pas de savoir si le caractère qui suit le ouistiti soit
(strcmp() retourne 0) ou quoique ce soit d'autre (strcmp() retourne une
valeur positive...
<DIGRESSION pour_débutant="non">
En fait il y a une fonction qui fait cela (à condition toutefois qu'il n'y
ait pas d'espace dans le mot cherché, ou bien que l'on ne s'intéresse pas à
la concordance de leur nombre): c'est sscanf(src, "ouistiti").
Mais il y a deux inconvénients majeurs : le premier, c'est que scanf() est
généralement une mauvaise idée, tant à cause des possibilités d'erreurs de
manipulation, que par les multiples possibilités de bogues présentes dans
les implémentations. Le second, c'est que sscanf(src, "ouistiti") tel quel
retourne toujours 0, ce qui n'est pas passionnant : il faut écrire un truc
du genre
int longlue;
/* ... */
if( sscanf(src, "ouistiti" "%n", &longlue) == 1 )
/* OK, on a lu tout le ouistiti */
ce qui est d'une toute autre complexité, même si on récupère gratuitement au
passage la taille du ouistiti, qui équivaut à la position de ce qui suit
(src+longlue).
</DIGRESSION>
J'y ai pensé aussi, mais je n'ai pas trouvé. Le problème c'est qu'après avoir parcouru tout le ouistiti, avec strcmp() il n'y a pas de moyen de dire que c'est bon, on s'arrête là, cela ne nous intéresse pas de savoir si le caractère qui suit le ouistiti soit (strcmp() retourne 0) ou quoique ce soit d'autre (strcmp() retourne une valeur positive...
<DIGRESSION pour_débutant="non"> En fait il y a une fonction qui fait cela (à condition toutefois qu'il n'y ait pas d'espace dans le mot cherché, ou bien que l'on ne s'intéresse pas à la concordance de leur nombre): c'est sscanf(src, "ouistiti"). Mais il y a deux inconvénients majeurs : le premier, c'est que scanf() est généralement une mauvaise idée, tant à cause des possibilités d'erreurs de manipulation, que par les multiples possibilités de bogues présentes dans les implémentations. Le second, c'est que sscanf(src, "ouistiti") tel quel retourne toujours 0, ce qui n'est pas passionnant : il faut écrire un truc du genre int longlue; /* ... */ if( sscanf(src, "ouistiti" "%n", &longlue) == 1 ) /* OK, on a lu tout le ouistiti */
ce qui est d'une toute autre complexité, même si on récupère gratuitement au passage la taille du ouistiti, qui équivaut à la position de ce qui suit (src+longlue). </DIGRESSION>
Antoine
Harpo
Antoine Leca wrote:
En news:43e1b7a3$0$19710$, Harpo va escriure:
Mais je pense que strcmp() aurait fait l'affaire.
J'y ai pensé aussi, mais je n'ai pas trouvé. Le problème c'est qu'après avoir parcouru tout le ouistiti, avec strcmp() il n'y a pas de moyen de dire que c'est bon, on s'arrête là, cela ne nous intéresse pas de savoir si le caractère qui suit le ouistiti soit (strcmp() retourne 0) ou quoique ce soit d'autre (strcmp() retourne une valeur positive...
Ok, tu as raison sur ce point, disons que je n'étais pas réveillé ce matin.
<DIGRESSION pour_débutant="non">
Je dirais même 'NON!' (...)
int longlue; /* ... */ if( sscanf(src, "ouistiti" "%n", &longlue) == 1 ) /* OK, on a lu tout le ouistiti */
ce qui est d'une toute autre complexité, même si on récupère gratuitement au passage la taille du ouistiti, qui équivaut à la position de ce qui suit (src+longlue).
Cela ppurrait être tentant d'utilise cela pour scanner, mais je continue à dire 'non'.
-- http://harpo.free.fr/
Antoine Leca wrote:
En news:43e1b7a3$0$19710$8fcfb975@news.wanadoo.fr, Harpo va escriure:
Mais je pense que strcmp() aurait fait l'affaire.
J'y ai pensé aussi, mais je n'ai pas trouvé.
Le problème c'est qu'après avoir parcouru tout le ouistiti, avec
strcmp() il n'y a pas de moyen de dire que c'est bon, on s'arrête là,
cela ne nous intéresse pas de savoir si le caractère qui suit le
ouistiti soit (strcmp() retourne 0) ou quoique ce soit d'autre
(strcmp() retourne une valeur positive...
Ok, tu as raison sur ce point, disons que je n'étais pas réveillé ce
matin.
<DIGRESSION pour_débutant="non">
Je dirais même 'NON!'
(...)
int longlue;
/* ... */
if( sscanf(src, "ouistiti" "%n", &longlue) == 1 )
/* OK, on a lu tout le ouistiti */
ce qui est d'une toute autre complexité, même si on récupère
gratuitement au passage la taille du ouistiti, qui équivaut à la
position de ce qui suit (src+longlue).
Cela ppurrait être tentant d'utilise cela pour scanner, mais je continue
à dire 'non'.
J'y ai pensé aussi, mais je n'ai pas trouvé. Le problème c'est qu'après avoir parcouru tout le ouistiti, avec strcmp() il n'y a pas de moyen de dire que c'est bon, on s'arrête là, cela ne nous intéresse pas de savoir si le caractère qui suit le ouistiti soit (strcmp() retourne 0) ou quoique ce soit d'autre (strcmp() retourne une valeur positive...
Ok, tu as raison sur ce point, disons que je n'étais pas réveillé ce matin.
<DIGRESSION pour_débutant="non">
Je dirais même 'NON!' (...)
int longlue; /* ... */ if( sscanf(src, "ouistiti" "%n", &longlue) == 1 ) /* OK, on a lu tout le ouistiti */
ce qui est d'une toute autre complexité, même si on récupère gratuitement au passage la taille du ouistiti, qui équivaut à la position de ce qui suit (src+longlue).
Cela ppurrait être tentant d'utilise cela pour scanner, mais je continue à dire 'non'.
-- http://harpo.free.fr/
Emmanuel Delahaye
Je veux ecrire dans le fichier la valeur d'une variable, je fais ainsi mais ca va pas? fputs(("language=%ldn", lang), fOut);
Ben non. Tu n'as donc pas de livre de C ? fprintf()...
-- A+
Emmanuel Delahaye
Je veux ecrire dans le fichier la valeur d'une variable, je fais ainsi mais ca va pas?
fputs(("language=%ldn", lang), fOut);
Ben non. Tu n'as donc pas de livre de C ? fprintf()...