Печать символов и их ASCII-кода в C

Как напечатать char и его эквивалентное значение ASCII в C?


person Chris_45    schedule 24.09.2009    source источник
comment
Пока кажется, что среди 12 ответов нет правильного ответа. Многим не удается ограничить значения диапазоном от 0 до 127, поскольку ASCII — это 7-битная кодировка, и до сих пор никто не решил проблему, заключающуюся в том, что числовое значение символа в C не обязательно должно быть ASCII значение! Система/компилятор также может использовать что-то вроде кодировки EBCDIC, тогда числовое значение «а» не будет значением ASCII «а» в C.   -  person BlackJack    schedule 17.08.2017


Ответы (7)


Это распечатывает все значения ASCII:

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

и это выводит значение ASCII для данного символа:

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;
}
person ennuikiller    schedule 24.09.2009
comment
Ваш код печатает десятичное значение, созданное путем преобразования char в int. Это может быть код ascii в некоторых системах, но опять же может и не быть. - person Pete Kirkham; 24.09.2009
comment
Почему приведенная выше программа не печатает символы ASCII от 127 до 160? - person CodeCodeCode; 03.05.2013
comment
Почти уверен, что ASCII останавливается на 127 - person ; 24.09.2013
comment
Разве это не неопределенное поведение?? используя %d для печати char?? - person user007; 10.07.2015
comment
Извините, -1 за getch(). Ужасный пример использования этой нестандартной функции. - person Iharob Al Asimi; 18.01.2016
comment
@ user007: Нет. Невозможно передать char функции с переменным числом аргументов. Любой целочисленный тип, который меньше int, будет преобразован в int или unsigned int. Единственным случаем, который может вызвать проблемы, будет необычная реализация, когда CHAR_MAX не является репрезентативным в signed int, но вызовет всевозможные проблемы в другом месте. - person Nisse Engström; 18.08.2017
comment
Представительныйбле. ... но это вызовет всевозможные проблемы и в других местах. - person Nisse Engström; 18.08.2017
comment
Прежде всего, ASCII имеет 7 бит от 0 до 128 (0x0 до 0x7F), после чего он называется EASCII. означает РасширенныйAscii.то есть 8-битный, и если вам нужно напечатать EASCII, вам нужно UTF-8 кодировка включена из заголовочного файла Locale.h. - person HaseeB Mir; 07.11.2018

Попробуй это:

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

%c — это строка формата для одного символа, а %d — для цифры/целого числа. Приведя char к целому числу, вы получите значение ascii.

person MBillock    schedule 24.09.2009
comment
Вам не нужно приводить к int, так как стандартные промо-акции автоматически преобразуют c в int. - person David R Tribble; 24.09.2009

Ничего не может быть проще, чем это

#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;  
}   

Источник: программа для печати Значение ASCII всех символов

person Pankaj Prakash    schedule 19.06.2015

Чтобы напечатать все значения ascii от 0 до 255, используя цикл while.

#include<stdio.h>

int main(void)
{
    int a;
    a = 0;
    while (a <= 255)
    {
        printf("%d = %c\n", a, a);
        a++;
    }
    return 0;
}
person Sudeep Acharya    schedule 29.01.2013
comment
ASCII имеет 7 бит, поэтому от 0 до 127 после этого определяется системой EASCII. - person HaseeB Mir; 07.11.2018

Символы в одинарных кавычках ('XXXXXX') при печати в виде десятичного числа должны выводить значение ASCII.

int main(){

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

    return 0;

}

Выход:

% ./a.out
>> D
>> The ASCII of D is 68
person syamantak82    schedule 08.02.2015

Это читает строку текста из стандартного ввода и распечатывает символы в строке и их коды 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);
    }
}
person David R Tribble    schedule 24.09.2009
comment
%X ожидает целое число без знака. - person Nisse Engström; 18.08.2017
comment
@NisseEngström - исправлен код для действительно педантичных. Да, всегда полезно использовать unsigned char[] для текстовых буферов. - person David R Tribble; 25.09.2017

Самый простой подход к печати значений ASCII заданного алфавита.

Вот пример:

#include<stdio.h>
int main()
{
    //we are printing the ASCII value of 'a'
    char a ='a'
    printf("%d",a)
    return 0;
}
person Python-Baby    schedule 03.10.2019