L'Informatique, une passion à partager !
Les valeurs ASCII en C
Bonjour à tous
,
Aujourd’hui je vais vous parler des valeurs ASCII, et nous allons voir ce qu’elles permettent en C.
Introduction
En informatique les caractères sont codés (représentés) par des valeurs numériques. Plus généralement un “codage de caractère” est un code qui associe un jeu de caractères d’une langue à un jeu de quelque chose d’autre (nombres, signaux électriques, durée…). Tout le monde connait le code Morse, qui associe une série de pressions courtes et longues à un alphabet.
Vous l’avez compris il n’existe pas de méthode pour stocker des caractères directement.
Valeurs ASCII et principes
Inventée en 1961, la norme ASCII (American Standard Code for Informations Interchange) est une norme de codage de caractères très connue. Allez on entre dans le vif du sujet :hihi: .
L’ASCII définit 128 caractères numérotés de 0 à 127 codés sur sept bits. Toutefois la majorité des ordinateurs d’aujourd’hui travaillent sur huit bits (un octet), chaque caractère en ASCII est donc codé sur un octet, dont le 8ème bit est 0.
Les codes de 0 à 31 ne sont pas des caractères linguistiques, ce sont des caractères de contrôle ou encore de séquences d’échappement.
Ils permettent notamment en C :
- le retour à la ligne, symbolisé en C par : ‘\n‘ (sa valeur est 10)
- la bip sonore : ‘\a‘ (sa valeurs est 7)
- et bien d’autres…
Les codes 65 à 90 représentent les majuscules, et les codes 97 à 122 les minuscules.
Les chiffres sont compris entre 48 et 57. Le numéro 32 est l’espace. Les autres correspondent à des signes de ponctuations et autres symboles.

Maintenant on va étudier un exemple en C utilisant les valeurs ASCII.
Comment faire pour convertir une lettre majuscule en minuscule ? Il est vrai qu’il existe déjà une fonction dans la bibliothèque standard pouvant résoudre notre problème, mais je vous propose de comprendre “comment ça marche” :vent: .
int min(int c) { if (c >='A' && c <= 'Z') return c + 'a' - 'A'; else return c; }
Oui c’est tout
. La fonction analyse si le paramètre envoyé est bien une lettre majuscule. Si il l’est, la fonction retourne le caractère c :
- en lui ajoutant la valeur de ‘a‘, c’est à dire 97.
- en lui soustrayant la valeur de ‘A‘, c’est à dire 65.
Faites le calcul, pour c = ‘B‘;
→ ‘B‘ + ‘a‘ – ‘A‘ = 66 + 97 – 65 = 98.
Ce qui correspond bien à la valeur du caractère ‘b‘
. Comment est ce possible ? Et bien la différence entre la valeur numérique d’une majuscule et de la minuscule correspondante est la même pour toutes les lettres. Regarder plutôt :
- ‘b‘ – ‘B‘ = 98 – 66 = 32 ;
- ‘g‘ – ‘G‘ = 103 – 71 = 32 ;
- ‘z‘ – ‘Z‘ = 122 – 90 = 32 ;
Notez que l’on peut donc écrire dans notre fonction : return c + 32;
Voilà un petit exemple sympathique
.
about 11 months ago
Bonjour, sympa ce petit article. Je voudrais dire que c’est vrai que c’est intéressant de savoir « comment ça marche », après faut voir le côté utilité dans un programme.
Ça reste quand même bon à savoir au cas où on aurait pas envie d’utiliser une nouvelle librairie pour manipuler les caractères.
Alexis’s Journal.
about 10 months ago
Merci le tuto de bluestorm sur le typage <3 tu pourrais au moins citer la source de ton code.
about 10 months ago
Avant de m’agresser sauvagement, renseigne toi un peu :colere: ! Un, je n’ai pas copié/collé je ne sais quel code, passe un lien stp. Deux ce code est plus ou moins universel, de toute façon il n’y a pas de multiples méthodes pour convertir un caractère majuscule en minuscule …
D’ailleurs tu peux retrouver ce code dans Le K&R page 43… rassuré ?
about 3 months ago
I’m frequently searching for recent informations in the internet about this issue. Thanks.
about 2 weeks ago
Merci pour cette information interessante