[提問]一段小代碼輸出不正確解决思路

[提問]一段小代碼輸出不正確

/*顯示一個字符的編碼值*/
#include <stdio.h>
int main(void)
{
char ch;
printf("please enter a character.\n");
scanf_s("%c",&ch);
printf("The code for %c is %d.\n", ch, ch);
return 0;
}


這一段代碼是想取得鍵盤上一個字符,然後打印出它的十進制整數.

我遇到的問題是,無論我輸入任何字符,他輸出的%d都顯示為0,請問這是什麼原因呢?

-------------------------------------------------程序調試信息-------------------------------------------------------------------
“beep_test.exe”(Win32):  已加载“H:\程序调试\beep_test\Debug\beep_test.exe”。已加载符号。
“beep_test.exe”(Win32):  已加载“C:\Windows\SysWOW64\ntdll.dll”。已加载符号。
“beep_test.exe”(Win32):  已加载“C:\Windows\SysWOW64\kernel32.dll”。无法查找或打开 PDB 文件。
“beep_test.exe”(Win32):  已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。
“beep_test.exe”(Win32):  已加载“C:\Windows\SysWOW64\msvcr120d.dll”。无法查找或打开 PDB 文件。
------解决思路----------------------
scanf_s("%c",&ch,1); scanf_s()的写法格式错误
在调用时,必须提供一个数字以表明最多读取多少位字符。 用scanf应该就没事了
------解决思路----------------------
两种解决方案:
第一种:正确使用scanf_s
引用:
scanf_s("%c",&ch,1); scanf_s()的写法格式错误
在调用时,必须提供一个数字以表明最多读取多少位字符。 用scanf应该就没事了

第二种:
scanf_s不是标准C的内容,是微软为了防止缓冲区溢出漏洞对C标准库的扩展,不想看到警告就加一个
#define _CRT_SECURE_NO_WARNINGS
放在程序最前头