user
Comment écrire un code qui permet de donner une valeur a mettre en ASCII et inversement en langage C ?
alphonsio

En C, les variables seront forcément converties et stockées en binaire. Par exemple, les trois déclarations ci-dessous contiendront toutes la même valeur binaire 1000001:

char caractere = 'A';
char ascii = 65;
char hexa = 0x41;

En rechanche, il est possible de les afficher sous différentes formes grâce au code de format :

  • %c affichera le caractère A
  • %d affichera sous forme décimale 65
  • %x affichera sous forme hexadécimale 41
printf ("%c %d %x\n", caractere, caractere, caractere);
printf ("%c %d %x\n", ascii, ascii, ascii);
printf ("%c %d %x\n", hexa, hexa, hexa);

Les trois printf ci-dessus afficheront tous la même chose :

A 65 41
A 65 41
A 65 41

Pour créer un programme en langage C qui permet de convertir une valeur numérique en son équivalent ASCII (caractère) et inversement (caractère en sa valeur ASCII), vous pouvez utiliser les fonctions printf et scanf pour l'interaction avec l'utilisateur. Voici un exemple de code qui réalise ces deux conversions :

#include <stdio.h>

// Programme principal
int main() {
    int choix;
    char caractere;
    int valeurASCII;

    // Menu d'options: 
    printf("Conversion ASCII <-> Valeur Numérique\n");
    printf("Choisissez une option:\n");
    printf("1. Convertir une valeur numérique en caractère ASCII\n");
    printf("2. Convertir un caractère en sa valeur ASCII\n");
    printf("Votre choix: ");
    scanf("%d", &choix);

    
    if (choix == 1) {
        // Choix 1 : Conversion nombre vers ASCII
        printf("Entrez une valeur numérique (0-127): ");
        scanf("%d", &valeurASCII);

        if (valeurASCII >= 0 && valeurASCII <= 127) {
            printf("Le caractère ASCII pour %d est '%c'\n", valeurASCII, (char)valeurASCII);
        } else {
            printf("Veuillez entrer une valeur entre 0 et 127.\n");
        }
    } else if (choix == 2) {
        // Choix 2 : Conversion ASCII vers nombre
        printf("Entrez un caractère: ");
        scanf(" %c", &caractere);  // Notez l'espace avant %c pour capturer le caractère
        
        printf("La valeur ASCII pour '%c' est %d\n", caractere, (int)caractere);
    } else {
        // Gestion des erreurs
        printf("Choix invalide. Veuillez entrer 1 ou 2.\n");
    }

    return 0;
}

Explication :

  1. Menu d'options: Le programme commence par afficher un menu qui permet à l'utilisateur de choisir entre convertir une valeur numérique en caractère ASCII ou convertir un caractère en sa valeur ASCII.

  2. Conversion nombre vers ASCII: Si l'utilisateur choisit l'option 1, le programme demande une valeur numérique comprise entre 0 et 127. Il vérifie la validité de la valeur avant de la convertir en caractère ASCII.

  3. Conversion ASCII vers nombre: Si l'utilisateur choisit l'option 2, le programme demande un caractère et affiche sa valeur ASCII. On veille à précéder le %c par un espace dans scanf pour bien capturer le caractère après un scanf numérique.

  4. Gestion des erreurs: Le programme vérifie que les entrées se situent dans l'intervalle valide et affiche un message d'erreur pour des saisies incorrectes.

Ce code illustre de manière simple comment effectuer des conversions entre caractères et valeurs ASCII en C.