2009-09-24 7 views
19

Comment imprimer un caractère et sa valeur ASCII équivalente dans C?Impression des caractères et de leur code ASCII dans C

+0

Jusqu'à présent, il semble y avoir pas de bonne réponse parmi les 12 réponses.Beaucoup échouent à limiter les valeurs à la plage 0 à 127 car ASCII est un encodage 7 bits, et jusqu'à présent aucun n'a résolu le problème que la valeur numérique d'un caractère en C ne doit pas être la valeur * ASCII *! Le système/compilateur pourrait également utiliser quelque chose comme le codage EBCDIC, alors la valeur numérique d'un 'a' ne serait pas la valeur ASCII d'un 'a' dans C. – BlackJack

Répondre

30

Ceci affiche toutes les valeurs ASCII:

int main() 
{ 
    int i; 
    i=0; 
    do 
    { 
     printf("%d %c \n",i,i); 
     i++; 
    } 
    while(i<=255); 
    return 0; 
} 

et ceci affiche la valeur ASCII pour un caractère donné:

int main() 
{ 
    int e; 
    char ch; 
    clrscr(); 
    printf("\n Enter a character : "); 
    scanf("%c",&ch); 
    e=ch; 
    printf("\n The ASCII value of the character is : %d",e); 
    getch(); 
    return 0; 
} 
+3

Votre code imprime la valeur décimale créée en convertissant le caractère en un int. Cela peut être le code ASCII sur certains systèmes, mais encore une fois, il ne peut pas. –

+0

Pourquoi le programme ci-dessus n'imprime pas les caractères ASCII de 127 à 160? – CodeCodeCode

+2

Assez sûr que ASCII s'arrête à 127 – sreya

5

Essayez ceci:

char c = 'a'; // or whatever your character is 
printf("%c %d", c, c); 

% c est la chaîne de format pour un seul caractère et% d pour un chiffre/entier. En convertissant le caractère en nombre entier, vous obtiendrez la valeur ASCII.

+0

Vous n'avez pas besoin de transtyper en 'int', puisque les promotions de type standard vont promouvoir' c' dans un 'int' automatiquement. –

+0

Oups - merci pour la capture. Était probablement juste en train d'essayer d'être trop explicite :) – MBillock

0

Ce lit une ligne de texte à partir de l'entrée standard et imprime les caractères de la ligne et leurs codes ASCII:

#include <stdio.h> 

void printChars(void) 
{ 
    unsigned char line[80+1]; 
    int    i; 

    // Read a text line 
    if (fgets(line, 80, stdin) == NULL) 
     return; 

    // Print the line chars 
    for (i = 0; line[i] != '\n'; i++) 
    { 
     int  ch; 

     ch = line[i]; 
     printf("'%c' %3d 0x%02X\n", ch, ch, (unsigned)ch); 
    } 
} 
+0

'% X' attend un ** unsigned ** int. –

+0

@ NisseEngström - Code corrigé, pour le vraiment pédant. Oui, c'est toujours une bonne idée d'utiliser 'unsigned char []' pour les tampons de texte. –

-3

Cela devrait fonctionner dans tout système C, non seulement ceux qui sont ASCII ou UTF- 8 sur la base:

printf (" Q is decimal 81 in ASCII\n"); 

Vous avez demandé à un omble chevalier; l'autre 96 d'entre eux sont laissés comme un exercice pour le lecteur.

-1
{

main()

vide printf ("% d", 'a'); // Nous pouvons remplacer un avec notre choix de caractère pour obtenir sa valeur ASCII //

getch();

}

+1

essayez d'expliquer vos réponses au lieu de simplement donner le, – ArtB

+0

cela ne fonctionne pas lol – ucefkh

1

Pour imprimer toutes les valeurs ascii de 0 à 255 en utilisant en boucle.

#include<stdio.h> 
main() 
{ 
    int a; 
    a=0; 
    while(a<=255) 
    { 
    printf("%d = %c\\n",a,a); 
    a++; 
    } 
    getch(); 
} 
-1
#include"stdio.h" 

#include"conio.h"//R.M.VIVEK coding for ascii display values 

void main() 
{ 

    int rmv; 

    for(rmv=0;rmv<=256;rmv++) 
     if(printf("%c",rmv)) 
      getch(); 
} 
0

Chars dans les guillemets simples ('xxxxxx'), lors de l'impression en décimal devrait afficher sa valeur ASCII.

int main(){ 

    printf("D\n"); 
    printf("The ASCII of D is %d\n",'D'); 

    return 0; 

} 

Sortie:

% ./a.out 
>> D 
>> The ASCII of D is 68 
-1

j'utilisais "pour" C'est ma solution:

using System; 
using System.Text; 

    class PrintASCIITable 
    { 
     static void Main() 
     { 
      byte symbols = 255; 

      for (int i = 0; i < symbols; i++) 
      { 
       Console.WriteLine((char)i); 
      } 
     } 
    } 
0

Rien ne peut être plus simple que ce

#include <stdio.h> 

int main() 
{ 
    int i; 

    for(i=0 ; i<=255 ; i++) /*ASCII values ranges from 0-255*/ 
    { 
     printf("ASCII value of character %c = %d\n", i, i); 
    } 

    return 0; 
} 

Source : program to print ASCII value of all characters

-1
#include<stdio.h> 
#include<conio.h> 
void main() 
{ 
    int i; 
    char ch; 
    clrscr(); 
    printf("\t Enter a Value: "); 
    scanf("%c",&ch); 
    i=0; 
    while(i<=ch) 
    { 
     printf("\t %d Is %c \n",i,i); 
     i=i+1; 
    } 
    getch(); 
} 
+4

Salut, merci pour votre réponse. L'affiche originale semble être un débutant, pourriez-vous expliquer chaque étape de votre code et leur implication? par exemple, en utilisant 'conio.h' votre code est clairement orienté Microsoft car cet en-tête n'est pas dans le standard C ni POSIX. – bufh

-3

Aussi, vous pouvez utiliser comme ceci (C++):

int main(){ 
     int x; 
     cin >> x; 
     cout <<(char)x; // In the form of character 
     char a; 
     cin >> a; 
     cout << (int)a; // In the form of `Ascii` code 
} 
+0

S'il vous plaît modifier la mise en forme de votre réponse! – jogo

+1

Qu'est-ce que cela a à voir avec C? :) – animaonline

Questions connexes