Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Question de Debutant] Caractere de fin de chaine et signe 0

11 réponses
Avatar
Jo
Salut a tous,

Je m'initie a ce fabuleux langage qu'a l'air d'etre le C++.
Pour l'instant, je lis le bouquin (Le tout en poche : Le Langage C++) avant
de passer a la pratique.

Dans le chapitre traitant des chaines de caracteres, j'ai lu que la fin de
chaine etait marquee par le "signe de fin de chaine".
Celui-ci est defini par "/0" ou "0".

Bon, jusque la, ok.

Mais si je veux mettre un 0 dans ma chaine sans indiquer la fin de celle ci
?? Je fais comment ??
Le compilateur va l'interpreter comme la fin de la chaine alors que dans ce
cas, je veux juste representer un zero !!!
Y a rien a ce propos dans mon bouquin.

Quelqu'un pourrait il m'eclairer ??

Merci d'avance.

A plus.

--
Jo.

1 réponse

1 2
Avatar
Christophe Lephay
Jo wrote:
Mais en utilisant la notation "plus classique" qui est Tableau[], si
je met un 0, d'apres le bouquin, au meme titre que /0, ca devrait
etre considere comme la fin de la chaine...
Est ce une erreur du bouquin ??? Ou sinon, comment le compilateur
fait il la difference entre le zero en tant que caractere et le zero
de fin de chaine ??
Si je rentre les chaines "annee 2004/0" ou "annee 20040", est ce que
dans les 2 cas, apres une demande d'affichage (bien sur),
j'ai a l'ecran: annee 2004
ou alors j'ai: annee 2 (puisque le 0 indique la fin de la chaine) ???


Attention : '0' et '' ne sont pas du tout le même caractère. Le codage
dépend de la plateforme, mais en ascii, le '' est le caractere nul, qui a
pour code 0, tandis que le '0' a pour code 48.

char ch1 = ''; // synonyme de ch = 0;
char ch2 = '0'; // synonyme de ch = 48;


Une question qui se pose, c'est comment avoir la séquence "" dans une
chaine de caractères. En C comme en C++, l'antislash a un comportement
spécial et prévoit une manière spécifique d'être représentée dans une chaine
de caractère (il faut le doubler).

Ainsi :
char chaine[] = "20049";

posera effectivement des problèmes car la séquence "" sera considérée
comme une fin de chaine. La façon correcte de représenter cette séquence est
:

char chaine[] = "20049";

Note le double antislash pour représenter l'antislash dans la chaine...

Chris

1 2