[debutant]difference entre guillemets et apostrophes
20 réponses
Guillaume R.
Bonjour,
Voila je suis en train d'apprendre le C en utilisant le K&R
comme base.
Mon probleme est le suivant: lors de l'exo 1.10 ou il est
demande de remplacer les tabulations par \t les caracteres
de retour en arriere par \b et les backslashes par \ .
J'arrive sans probleme a ecrire le code mais ce que je ne
comprends pas c'est la raison pour laquelle lorsque j'ecris
if (c=='\t'){
putchar ("\t");
}
mon code ne marche pas (j'ai un @ lors de la saisie).
Par contre si j'ecris:
if (c=='\t'){
putchar ('\t');
}
ca marche sans probleme...Mais je ne comprends pas pourquoi.
Il est ecrit que les apostrophes represente des constantes
caracteres, je m'attendais donc dans le second cas a avoir une
simple tabulation et dans le premier l'affichage de \t
Qq'un pourrait il m'expliquer pourquoi cela fonctionne dans le
second cas et pas dans le premier?
Merci et dsl pour le caractere basique de la question
Bonjour, Voila je suis en train d'apprendre le C en utilisant le K&R comme base. Mon probleme est le suivant: lors de l'exo 1.10 ou il est demande de remplacer les tabulations par t les caracteres de retour en arriere par b et les backslashes par .
l'édition 1988 (5e tirage dit) " pour le «backslash» lui-même"
if (c=='t') putchar ("t");
à modifier selon le point ci-dessus.
Sylvain.
Guillaume R. wrote on 02/07/2006 18:00:
Bonjour,
Voila je suis en train d'apprendre le C en utilisant le K&R
comme base.
Mon probleme est le suivant: lors de l'exo 1.10 ou il est
demande de remplacer les tabulations par t les caracteres
de retour en arriere par b et les backslashes par .
l'édition 1988 (5e tirage dit) "\ pour le «backslash» lui-même"
Bonjour, Voila je suis en train d'apprendre le C en utilisant le K&R comme base. Mon probleme est le suivant: lors de l'exo 1.10 ou il est demande de remplacer les tabulations par t les caracteres de retour en arriere par b et les backslashes par .
l'édition 1988 (5e tirage dit) " pour le «backslash» lui-même"
if (c=='t') putchar ("t");
à modifier selon le point ci-dessus.
Sylvain.
Pierre Maurette
Bonjour, Voila je suis en train d'apprendre le C en utilisant le K&R comme base. Mon probleme est le suivant: lors de l'exo 1.10 ou il est demande de remplacer les tabulations par t les caracteres de retour en arriere par b et les backslashes par . J'arrive sans probleme a ecrire le code mais ce que je ne comprends pas c'est la raison pour laquelle lorsque j'ecris
if (c=='t'){ putchar ("t"); }
Ici vous devez avoir un warning. Ça devrait essayer d'afficher un pointeur converti en unsigned char. C'est à dire n'importe quoi. Pour afficher une chaîne vous avez puts().
mon code ne marche pas (j'ai un @ lors de la saisie). Par contre si j'ecris:
if (c=='t'){ putchar ('t'); }
ca marche sans probleme...Mais je ne comprends pas pourquoi. Il est ecrit que les apostrophes represente des constantes caracteres, je m'attendais donc dans le second cas a avoir une simple tabulation et dans le premier l'affichage de t
Non, la chaîne "t", c'est {'t', ' '}, c'est à dire une chaîne bien formée (avec zéro final) contanant une tabulation et rien d'autre. Pour afficher t, la chaîne serait "t" (on dit qu'on "échappe" l'antislash).
-- Pierre Maurette
Bonjour,
Voila je suis en train d'apprendre le C en utilisant le K&R
comme base.
Mon probleme est le suivant: lors de l'exo 1.10 ou il est
demande de remplacer les tabulations par t les caracteres
de retour en arriere par b et les backslashes par .
J'arrive sans probleme a ecrire le code mais ce que je ne
comprends pas c'est la raison pour laquelle lorsque j'ecris
if (c=='t'){
putchar ("t");
}
Ici vous devez avoir un warning. Ça devrait essayer d'afficher un
pointeur converti en unsigned char. C'est à dire n'importe quoi.
Pour afficher une chaîne vous avez puts().
mon code ne marche pas (j'ai un @ lors de la saisie).
Par contre si j'ecris:
if (c=='t'){
putchar ('t');
}
ca marche sans probleme...Mais je ne comprends pas pourquoi.
Il est ecrit que les apostrophes represente des constantes
caracteres, je m'attendais donc dans le second cas a avoir une
simple tabulation et dans le premier l'affichage de t
Non, la chaîne "t", c'est {'t', ' '}, c'est à dire une chaîne bien
formée (avec zéro final) contanant une tabulation et rien d'autre. Pour
afficher t, la chaîne serait "\t" (on dit qu'on "échappe"
l'antislash).
Bonjour, Voila je suis en train d'apprendre le C en utilisant le K&R comme base. Mon probleme est le suivant: lors de l'exo 1.10 ou il est demande de remplacer les tabulations par t les caracteres de retour en arriere par b et les backslashes par . J'arrive sans probleme a ecrire le code mais ce que je ne comprends pas c'est la raison pour laquelle lorsque j'ecris
if (c=='t'){ putchar ("t"); }
Ici vous devez avoir un warning. Ça devrait essayer d'afficher un pointeur converti en unsigned char. C'est à dire n'importe quoi. Pour afficher une chaîne vous avez puts().
mon code ne marche pas (j'ai un @ lors de la saisie). Par contre si j'ecris:
if (c=='t'){ putchar ('t'); }
ca marche sans probleme...Mais je ne comprends pas pourquoi. Il est ecrit que les apostrophes represente des constantes caracteres, je m'attendais donc dans le second cas a avoir une simple tabulation et dans le premier l'affichage de t
Non, la chaîne "t", c'est {'t', ' '}, c'est à dire une chaîne bien formée (avec zéro final) contanant une tabulation et rien d'autre. Pour afficher t, la chaîne serait "t" (on dit qu'on "échappe" l'antislash).
-- Pierre Maurette
Emmanuel Delahaye
J'arrive sans probleme a ecrire le code mais ce que je ne comprends pas c'est la raison pour laquelle lorsque j'ecris
if (c=='t'){ putchar ("t"); }
Parce que pour indiquer une caractère seul, on utilise ' ' et non " ". Les " " servent à autre chose que tu verras plus tard.
putchar ('t');
mon code ne marche pas (j'ai un @ lors de la saisie). Par contre si j'ecris:
if (c=='t'){ putchar ('t'); }
ca marche sans probleme...Mais je ne comprends pas pourquoi. Il est ecrit que les apostrophes represente des constantes caracteres, je m'attendais donc dans le second cas a avoir une simple tabulation et dans le premier l'affichage de t Qq'un pourrait il m'expliquer pourquoi cela fonctionne dans le second cas et pas dans le premier?
Ça fonctionne pour la raison exposée par le livre que tu as moi même citée : "les apostrophes représentent des constantes caractères". putchar() attend une valeur qui est, par exemple, celle d'une constante caractère.
-- A+
Emmanuel Delahaye
J'arrive sans probleme a ecrire le code mais ce que je ne
comprends pas c'est la raison pour laquelle lorsque j'ecris
if (c=='t'){
putchar ("t");
}
Parce que pour indiquer une caractère seul, on utilise ' ' et non " ".
Les " " servent à autre chose que tu verras plus tard.
putchar ('t');
mon code ne marche pas (j'ai un @ lors de la saisie).
Par contre si j'ecris:
if (c=='t'){
putchar ('t');
}
ca marche sans probleme...Mais je ne comprends pas pourquoi.
Il est ecrit que les apostrophes represente des constantes
caracteres, je m'attendais donc dans le second cas a avoir une
simple tabulation et dans le premier l'affichage de t
Qq'un pourrait il m'expliquer pourquoi cela fonctionne dans le
second cas et pas dans le premier?
Ça fonctionne pour la raison exposée par le livre que tu as moi même
citée : "les apostrophes représentent des constantes caractères".
putchar() attend une valeur qui est, par exemple, celle d'une constante
caractère.
J'arrive sans probleme a ecrire le code mais ce que je ne comprends pas c'est la raison pour laquelle lorsque j'ecris
if (c=='t'){ putchar ("t"); }
Parce que pour indiquer une caractère seul, on utilise ' ' et non " ". Les " " servent à autre chose que tu verras plus tard.
putchar ('t');
mon code ne marche pas (j'ai un @ lors de la saisie). Par contre si j'ecris:
if (c=='t'){ putchar ('t'); }
ca marche sans probleme...Mais je ne comprends pas pourquoi. Il est ecrit que les apostrophes represente des constantes caracteres, je m'attendais donc dans le second cas a avoir une simple tabulation et dans le premier l'affichage de t Qq'un pourrait il m'expliquer pourquoi cela fonctionne dans le second cas et pas dans le premier?
Ça fonctionne pour la raison exposée par le livre que tu as moi même citée : "les apostrophes représentent des constantes caractères". putchar() attend une valeur qui est, par exemple, celle d'une constante caractère.
-- A+
Emmanuel Delahaye
Pierre Maurette
Guillaume R. wrote on 02/07/2006 18:00:
Bonjour, Voila je suis en train d'apprendre le C en utilisant le K&R comme base. Mon probleme est le suivant: lors de l'exo 1.10 ou il est demande de remplacer les tabulations par t les caracteres de retour en arriere par b et les backslashes par .
l'édition 1988 (5e tirage dit) " pour le «backslash» lui-même"
if (c=='t') putchar ("t");
à modifier selon le point ci-dessus.
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif jovial:
putchar ("t"[0]);
-- Pierre Maurette
Guillaume R. wrote on 02/07/2006 18:00:
Bonjour,
Voila je suis en train d'apprendre le C en utilisant le K&R
comme base.
Mon probleme est le suivant: lors de l'exo 1.10 ou il est demande de
remplacer les tabulations par t les caracteres
de retour en arriere par b et les backslashes par .
l'édition 1988 (5e tirage dit) "\ pour le «backslash» lui-même"
if (c=='t')
putchar ("t");
à modifier selon le point ci-dessus.
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif
jovial:
Bonjour, Voila je suis en train d'apprendre le C en utilisant le K&R comme base. Mon probleme est le suivant: lors de l'exo 1.10 ou il est demande de remplacer les tabulations par t les caracteres de retour en arriere par b et les backslashes par .
l'édition 1988 (5e tirage dit) " pour le «backslash» lui-même"
if (c=='t') putchar ("t");
à modifier selon le point ci-dessus.
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif jovial:
putchar ("t"[0]);
-- Pierre Maurette
Sylvain
Pierre Maurette wrote on 02/07/2006 18:47:
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif jovial:
cela suffira à produire le caractère
cela ne change rien à la confusion puts, putchar; mais le PO étant "en train d'apprendre" il n'est pas tjrs utile de recevoir les réponses aux questions que l'on ne s'est pas encore posées - soit on ne les comprend pas, soit on les adopte comme une recette sans évaluer l'enjeu.
Sylvain.
Pierre Maurette wrote on 02/07/2006 18:47:
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif jovial:
cela suffira à produire le caractère
cela ne change rien à la confusion puts, putchar; mais le PO étant "en
train d'apprendre" il n'est pas tjrs utile de recevoir les réponses aux
questions que l'on ne s'est pas encore posées - soit on ne les comprend
pas, soit on les adopte comme une recette sans évaluer l'enjeu.
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif jovial:
cela suffira à produire le caractère
cela ne change rien à la confusion puts, putchar; mais le PO étant "en train d'apprendre" il n'est pas tjrs utile de recevoir les réponses aux questions que l'on ne s'est pas encore posées - soit on ne les comprend pas, soit on les adopte comme une recette sans évaluer l'enjeu.
Sylvain.
Pierre Maurette
Pierre Maurette wrote on 02/07/2006 18:47:
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif jovial:
cela suffira à produire le caractère
cela ne change rien à la confusion puts, putchar; mais le PO étant "en train d'apprendre" il n'est pas tjrs utile de recevoir les réponses aux questions que l'on ne s'est pas encore posées - soit on ne les comprend pas, soit on les adopte comme une recette sans évaluer l'enjeu.
Je ne comprends pas. Le problème principal (qui peut-être vous avait échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
-- Pierre Maurette
Pierre Maurette wrote on 02/07/2006 18:47:
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif jovial:
cela suffira à produire le caractère
cela ne change rien à la confusion puts, putchar; mais le PO étant "en train
d'apprendre" il n'est pas tjrs utile de recevoir les réponses aux questions
que l'on ne s'est pas encore posées - soit on ne les comprend pas, soit on
les adopte comme une recette sans évaluer l'enjeu.
Je ne comprends pas. Le problème principal (qui peut-être vous avait
échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
Je ne pense pas que ça suffira. Ou alors, pour faire dans le festif jovial:
cela suffira à produire le caractère
cela ne change rien à la confusion puts, putchar; mais le PO étant "en train d'apprendre" il n'est pas tjrs utile de recevoir les réponses aux questions que l'on ne s'est pas encore posées - soit on ne les comprend pas, soit on les adopte comme une recette sans évaluer l'enjeu.
Je ne comprends pas. Le problème principal (qui peut-être vous avait échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
-- Pierre Maurette
Emmanuel Delahaye
Je ne comprends pas. Le problème principal (qui peut-être vous avait échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
Impossible.
-- A+
Emmanuel Delahaye
Je ne comprends pas. Le problème principal (qui peut-être vous avait
échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
Je ne comprends pas. Le problème principal (qui peut-être vous avait échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
Impossible.
On se comprend. gcc warne et convertit un pointeur en unsigned char comme je l'ai expliqué, bc 5.5 refuse de compiler.
-- Pierre Maurette
Sylvain
Pierre Maurette wrote on 02/07/2006 19:00:
Je ne comprends pas.
comment 'produire' un antislash ? je suis sur que si.
Le problème principal (qui peut-être vous avait échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
vous interprétez (bien sur correctement mais grâce à votre expérience) ce qui n'est pas dit ni demandé.
l'exo. 1.10 de mon édition ne correspond pas à la description donnée, mais son annoncé, même partiel, indiquait qu'il souhaitait afficher la chaine "t", ma réponse est il faut utiliser "t".
puts, printf, fprintf(cout) et autre variantes sont soit dans les chapitres qu'il n'a pas encore lus et il lui fallait coder:
switch (getchar()){ case 't': putchar(''); putchar('t'); break; ...
soit traités dans le chapitre en cours, ou précédent, et il peut lui être utile de comprendre pourquoi son code ne réalise pas ce qu'il coince et le modifier ... mais je l'avais déjà dit dans mon post précédent.
Sylvain.
Pierre Maurette wrote on 02/07/2006 19:00:
Je ne comprends pas.
comment 'produire' un antislash ? je suis sur que si.
Le problème principal (qui peut-être vous avait
échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
vous interprétez (bien sur correctement mais grâce à votre expérience)
ce qui n'est pas dit ni demandé.
l'exo. 1.10 de mon édition ne correspond pas à la description donnée,
mais son annoncé, même partiel, indiquait qu'il souhaitait afficher la
chaine "t", ma réponse est il faut utiliser "\t".
puts, printf, fprintf(cout) et autre variantes sont soit dans les
chapitres qu'il n'a pas encore lus et il lui fallait coder:
switch (getchar()){
case 't':
putchar('\');
putchar('t');
break;
...
soit traités dans le chapitre en cours, ou précédent, et il peut lui
être utile de comprendre pourquoi son code ne réalise pas ce qu'il
coince et le modifier ... mais je l'avais déjà dit dans mon post précédent.
comment 'produire' un antislash ? je suis sur que si.
Le problème principal (qui peut-être vous avait échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
vous interprétez (bien sur correctement mais grâce à votre expérience) ce qui n'est pas dit ni demandé.
l'exo. 1.10 de mon édition ne correspond pas à la description donnée, mais son annoncé, même partiel, indiquait qu'il souhaitait afficher la chaine "t", ma réponse est il faut utiliser "t".
puts, printf, fprintf(cout) et autre variantes sont soit dans les chapitres qu'il n'a pas encore lus et il lui fallait coder:
switch (getchar()){ case 't': putchar(''); putchar('t'); break; ...
soit traités dans le chapitre en cours, ou précédent, et il peut lui être utile de comprendre pourquoi son code ne réalise pas ce qu'il coince et le modifier ... mais je l'avais déjà dit dans mon post précédent.
Sylvain.
Pierre Maurette
Pierre Maurette wrote on 02/07/2006 19:00:
Je ne comprends pas.
comment 'produire' un antislash ? je suis sur que si.
Le problème principal (qui peut-être vous avait échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
vous interprétez (bien sur correctement mais grâce à votre expérience) ce qui n'est pas dit ni demandé.
l'exo. 1.10 de mon édition ne correspond pas à la description donnée, mais son annoncé, même partiel, indiquait qu'il souhaitait afficher la chaine "t", ma réponse est il faut utiliser "t".
puts, printf, fprintf(cout) et autre variantes sont soit dans les chapitres qu'il n'a pas encore lus et il lui fallait coder:
switch (getchar()){ case 't': putchar(''); putchar('t'); break; ...
soit traités dans le chapitre en cours, ou précédent, et il peut lui être utile de comprendre pourquoi son code ne réalise pas ce qu'il coince et le modifier ... mais je l'avais déjà dit dans mon post précédent.
Sylvain.
On ne peut donner comme conseil de coder putchar("t"). Vous n'aviez sans doute pas percuté, ce genre d'erreur m'arrive un post sur trois. Il n'y a pas de honte à ça. Il suffit de corriger ou de laisser corriger, en évitant les arguties incohérentes, non ?
-- Pierre Maurette
Pierre Maurette wrote on 02/07/2006 19:00:
Je ne comprends pas.
comment 'produire' un antislash ? je suis sur que si.
Le problème principal (qui peut-être vous avait échappé ?) est bien
d'envoyer une chaîne à putchar(), non ?
vous interprétez (bien sur correctement mais grâce à votre expérience) ce qui
n'est pas dit ni demandé.
l'exo. 1.10 de mon édition ne correspond pas à la description donnée, mais
son annoncé, même partiel, indiquait qu'il souhaitait afficher la chaine
"t", ma réponse est il faut utiliser "\t".
puts, printf, fprintf(cout) et autre variantes sont soit dans les chapitres
qu'il n'a pas encore lus et il lui fallait coder:
switch (getchar()){
case 't':
putchar('\');
putchar('t');
break;
...
soit traités dans le chapitre en cours, ou précédent, et il peut lui être
utile de comprendre pourquoi son code ne réalise pas ce qu'il coince et le
modifier ... mais je l'avais déjà dit dans mon post précédent.
Sylvain.
On ne peut donner comme conseil de coder putchar("\t"). Vous n'aviez
sans doute pas percuté, ce genre d'erreur m'arrive un post sur trois.
Il n'y a pas de honte à ça. Il suffit de corriger ou de laisser
corriger, en évitant les arguties incohérentes, non ?
comment 'produire' un antislash ? je suis sur que si.
Le problème principal (qui peut-être vous avait échappé ?) est bien d'envoyer une chaîne à putchar(), non ?
vous interprétez (bien sur correctement mais grâce à votre expérience) ce qui n'est pas dit ni demandé.
l'exo. 1.10 de mon édition ne correspond pas à la description donnée, mais son annoncé, même partiel, indiquait qu'il souhaitait afficher la chaine "t", ma réponse est il faut utiliser "t".
puts, printf, fprintf(cout) et autre variantes sont soit dans les chapitres qu'il n'a pas encore lus et il lui fallait coder:
switch (getchar()){ case 't': putchar(''); putchar('t'); break; ...
soit traités dans le chapitre en cours, ou précédent, et il peut lui être utile de comprendre pourquoi son code ne réalise pas ce qu'il coince et le modifier ... mais je l'avais déjà dit dans mon post précédent.
Sylvain.
On ne peut donner comme conseil de coder putchar("t"). Vous n'aviez sans doute pas percuté, ce genre d'erreur m'arrive un post sur trois. Il n'y a pas de honte à ça. Il suffit de corriger ou de laisser corriger, en évitant les arguties incohérentes, non ?