caractère final d'une chaine

caractère final d'une chaine - C - Programmation

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

Reply

Marsh Posté le 16-06-2005 à 18:38:34   

Reply

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.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

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' ?

Reply

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++)


Message édité par Emmanuel Delahaye le 16-06-2005 à 19:08:48

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

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é

Reply

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' :)
 
je me suis mal exprimé


 
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


Message édité par Sve@r le 17-06-2005 à 09:22:23
Reply

Marsh Posté le 17-06-2005 à 09:26:27    

on peut mais est-ce portable ?

Reply

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.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 17-06-2005 à 09:35:41    

Emmanuel Delahaye a écrit :

Citation :

=> 'a' + 1 = 'b'


Non.


 
Ah ?  
Pourquoi ?


Message édité par Elmoricq le 17-06-2005 à 09:36:00
Reply

Marsh Posté le 17-06-2005 à 09:47:50    

Elmoricq a écrit :

Ah ?  
Pourquoi ?


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
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 17-06-2005 à 09:47:50   

Reply

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.
 
http://www.natural-innovations.com [...] bcdic.html

mais est-ce que c'est surréaliste d'imaginer d'autres jeu de caractères ?

Reply

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.)


Message édité par Emmanuel Delahaye le 17-06-2005 à 09:52:59

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 17-06-2005 à 10:04:49    

Emmanuel Delahaye a écrit :

Unicode ? é+1, ça fait quoi ? f' ?
 
Sinon EBCDIC est d'usage sur mainframe IBM (AS-400 etc.)


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.

Reply

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.


Message édité par Elmoricq le 17-06-2005 à 10:12:02
Reply

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

Reply

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   :o

Reply

Marsh Posté le 18-06-2005 à 08:56:57    

matafan a écrit :

La raison c'est que c'etait fait pour les cartes perforees :
http://www.cs.uiowa.edu/~jones/cards/codes.html


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 :o
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" ).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed