Отображение значения ASCII символа в c

Я принял символ в качестве ввода от пользователя. Я хочу напечатать значение ASCII этого символа в качестве вывода. Как я могу это сделать без использования какой-либо предопределенной функции (если она существует) для того же?

6 ответов

Вместо printf("%c", my_char) используйте %d для печати числового значения (ASCII).


Также рассмотрите printf("%hhu", c);, чтобы точно указать преобразование в unsigned char и печать его десятичного значения.

Update0

Итак, я действительно протестировал это на своем компиляторе C, чтобы узнать, что происходит, результаты интересны:

char c = '\xff';
printf("%c\n", c);
printf("%u\n", c);
printf("%d\n", c);
printf("%hhu\n", c);

Это то, что напечатано:

� (printed as ASCII)
4294967295 (sign extended to unsigned int)
-1 (sign extended to int)
255 (handled correctly)

Благодарим caf за то, что типы могут продвигаться неожиданными способами (что, по-видимому, для случаев %d и %u). Кроме того, похоже, что случай %hhu возвращается к char unsigned, возможно, отключив вышивки знака.


В этой демонстрации показана основная идея:

#include <stdio.h>
int main()
{
 char a = 0;
 scanf("%c",&a);
 printf("\nASCII of %c is %i\n", a, a); 
 return 0;
}
</stdio.h>


Код printf("%c = %d\n", n, n); отображает символ и его ASCII.


Это создаст список всех символов ASCII и напечатает его числовое значение.

#include <stdio.h>
#define N 127
int main()
{
 int n;
 int c;
 for (n=32; n<=N; n++) {
 printf("%c = %d\n", n, n);
 }
 return 0;
} 
</stdio.h>


#include "stdio.h"
 #include "conio.h"
 //this R.M.VIVEK coding for no.of ascii values display and particular are print
void main()
{
 int rmv,vivek;
 clrscr();
 for(rmv=0;rmv<=256;rmv++)
 {
 if(printf("%d = %c",rmv,rmv))
 }
 printf("Do you like particular ascii value\n enter the 0 to 256 number");
 scanf("%d",&vivek);
 printf("\nthe rm vivek ascii value is=%d",vivek);
 getch();
}

licensed under cc by-sa 3.0 with attribution.