gpt4 book ai didi

无法打印变量的 scanf_s 值的 ASCII 值

转载 作者:行者123 更新时间:2023-11-30 15:39:05 26 4
gpt4 key购买 nike

尝试获取用户输入的字符值,然后将其显示为 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's documentation :

Unlike scanf and wscanf, scanf_s and wscanf_s require the buffer size to be specified for all input parameters of type c, C, s, S, or string control sets that are enclosed in []. The buffer size in characters is passed as an additional parameter immediately following the pointer to the buffer or variable.

所以你需要的是:

scanf_s("%c", &let, sizeof(let));

尽管如此,与大多数安全功能一样,如果您知道自己在做什么,它们并不比“不安全”功能更安全。

请注意,我没有包含 真正 不安全的变体,例如 gets(str)scanf ("%s",str) 但那些你知道并控制你将消耗多少输入的东西就很好。

关于无法打印变量的 scanf_s 值的 ASCII 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21593021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com