[英]Can't printf ASCII value for scanf_s value of variable
嘗試獲取字符的用戶輸入值,然后將其顯示為ASCII整數。 它不想這樣做,因為我一直得到空白的輸出。 但是,如果我手動分配的字符信let
它工作正常。
#include "stdafx.h"
#include <stdio.h>
#define eps 8.85e-12
int main() {
int x = 1, y = 2, z;
float p = 2.5, q = 4.8;
double a = 2.5e-9, b;
char let;
z = 2 * y;
printf(" x/(y+z) = %.1f \n", (float)x/(y + z));
printf(" Get an alphabet ");
scanf_s("%c", &let);
printf("ASCII value of the alphabet is %d\n", let);
printf("Insert value of b :");
scanf_s("%lf", &b);
printf("value of eps/(a*b)= %8.2e\n", eps / (a*b));
return 0;
}
根據Microsoft的文檔 :
與
scanf
和wscanf
不同,scanf_s
和wscanf_s
要求為[]
中包含的c
,C
,s
,S
類型或字符串控制集的所有輸入參數指定緩沖區大小。 以字符為單位的緩沖區大小將作為附加參數傳遞到指向緩沖區或變量的指針之后。
因此,您需要的是:
scanf_s("%c", &let, sizeof(let));
但是,與大多數安全功能一樣,如果您知道自己在做什么,它們將比“不安全”功能更安全。
注意,我沒有包括真正不安全的變體,例如gets(str)
或scanf ("%s",str)
但那些您知道並控制要消耗多少輸入的變量就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.