caractère final d'une chaine - C - Programmation
Marsh Posté le 16-06-2005 à 18:48:40
maerlin666 a écrit : je voulais savoir a quoi correspondent les caractères tels que '\r' ou '\n' en fin de string |
Comme l'indique ton livre de C, '\n' est le caractère de fin de ligne et '\r' est le caractère de retour en début de ligne. A noter que le plus souvent, le caractère '\n' provoque le retour en début de ligne et l'avance d'une ligne.
Citation : et surtout a quoi ils correspondent en hexadecimale ou en binaire. |
Et en décimal ou en octal, ça ira ?
'\n' correspond en ASCII à la fonction LF (Line Feed) de valeur 10
'\r' correspond en ASCII à la fonction CR (Carriage Return) de valeur 13
Citation : Est il possible de les reproduire grace au clavier, si oui comment ? |
C'est pas évident. En général <enter> génère '\n' et ctrl-enter génère '\r', mais ça peut changer d'une machine à l'autre ou d'un système à l'autre.
Marsh Posté le 16-06-2005 à 19:05:09
pourquoi tu dis pas tout simplement que la valeur entière d'\n' est (int)'\n' ?
Marsh Posté le 16-06-2005 à 19:08:33
Taz a écrit : pourquoi tu dis pas tout simplement que la valeur entière d'\n' est (int)'\n' ? |
Parce que le cast est inutile vu qu'une constante caractère est déjà un int (en C, pas en C++)
Marsh Posté le 16-06-2005 à 20:24:38
oui, mais tout le monde comprends pas que la valeur de '\n' c'est '\n'
je me suis mal exprimé
Marsh Posté le 17-06-2005 à 09:21:18
Taz a écrit : oui, mais tout le monde comprends pas que la valeur de '\n' c'est '\n' |
C'est pas évident, pour un débutant, d'assimiler qu'un caractère est déjà un nombre qu'on peut utiliser tel quel
=> 'a' + 1 = 'b'
=> '9' - '0' = 9
Marsh Posté le 17-06-2005 à 09:29:54
Taz a écrit : on peut mais est-ce portable ? |
Citation : => 'a' + 1 = 'b' |
Non.
Citation : => '9' - '0' = 9 |
Oui.
Marsh Posté le 17-06-2005 à 09:35:41
Emmanuel Delahaye a écrit :
|
Ah ?
Pourquoi ?
Marsh Posté le 17-06-2005 à 09:47:50
Elmoricq a écrit : Ah ? |
Parce que le langage C ne garanti pas que le charset soit ASCII. En EBCDIC, les valeurs des caractères alphanumériques ne sont pas toutes consécutives.
http://www.natural-innovations.com [...] bcdic.html
Marsh Posté le 17-06-2005 à 09:49:28
Emmanuel Delahaye a écrit : Parce que le langage C ne garanti pas que le charset soit ASCII. En EBCDIC, les valeurs des caractères alphanumériques ne sont pas toutes consécutives. |
mais est-ce que c'est surréaliste d'imaginer d'autres jeu de caractères ?
Marsh Posté le 17-06-2005 à 09:51:07
Taz a écrit : mais est-ce que c'est surréaliste d'imaginer d'autres jeu de caractères ? |
Unicode ? é+1, ça fait quoi ? f' ?
Sinon EBCDIC est d'usage sur mainframe IBM (AS-400 etc.)
Marsh Posté le 17-06-2005 à 10:04:49
Emmanuel Delahaye a écrit : Unicode ? é+1, ça fait quoi ? f' ? |
oui, je pense exactement ça genre de chose. d'ailleurs strtod et ses amis sont dépendants des locales ce qui conduit souvent au massacre.
Marsh Posté le 17-06-2005 à 10:11:52
Je viens d'aller voir le lien donné par Emmanuel.
EBCDIC c'est clairement une table de malade, s'il n'y avait ce semblant de logique j'aurais pu croire qu'ils ont joué à boggle en concevant ça.
Enfin, y avait surement de bonnes raisons derrière, j'imagine.
Marsh Posté le 17-06-2005 à 17:11:42
La raison c'est que c'etait fait pour les cartes perforees :
http://www.cs.uiowa.edu/~jones/cards/codes.html
Marsh Posté le 17-06-2005 à 17:24:48
Je ne suis pas étonné, je pensais à quelque chose dans ce goût-là quand j'ai vu les groupements de lettres.
Ca n'en reste pas moins une table de malade
Marsh Posté le 18-06-2005 à 08:56:57
matafan a écrit : La raison c'est que c'etait fait pour les cartes perforees : |
Bon, on peut présumer que les codes qu'on développe aujourd'hui n'ont pas besoin d'assurer la compatibilité ascendante pour les systèmes à carts perforées, je suppose
Sinon, je viens d'apprendre un truc là (même si naturelement, je sens bien qu'il vaut mieux éviter de faire des trucs moches comme les "soustractins de caractères" ).
Marsh Posté le 16-06-2005 à 18:38:34
'jour a tous,
je voulais savoir a quoi correspondent les caractères tels que '\r' ou '\n' en fin de string et surtout a quoi ils correspondent en hexadecimale ou en binaire.
Est il possible de les reproduire grace au clavier, si oui comment ?
merci de votre aide