Я пытаюсь выучить C и пытаюсь преобразовать char
в int
, чтобы извлечь значение ASCII. Однако, когда я пытаюсь скомпилировать это в GCC, я получаю это предупреждение:
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
ascii = (int) letter;
Я пытаюсь создать простую программу, которая запрашивает один символ, сканирует его, а затем приводит его к типу int, чтобы получить значение ASCII, распечатывая это значение. Я инициализировал переменную letter
как char*
и ascii
как int
. Я пытался использовать заполнители %s
, %c
и %1s
для переменной letter
, но это не работает.
Вот код:
#include <stdio.h>
char* letter;
int ascii;
int main(){
printf("Please input a charcter:");
scanf("%s", letter);
ascii = (int) letter;
printf("\n The ASCII value of %s is %d.\n", letter, ascii);
}
Я ожидал бы, что "Please input a character:"
напечатает, затем будет напечатан символ, такой как a
, и затем будет напечатано, например, `'Значение ASCII для a равно 97 . "
Вместо этого, когда я что-то печатаю, он печатает "The ASCII value of (null) is zero."
Во время компиляции он печатает ошибку, указанную выше. Это не то, что должно было случиться.
Как я могу решить эту проблему?