Can';变量scanf_s值的t printf ASCII值
尝试获取字符的用户输入值,然后将其显示为ASCII整数。它不想这样做——因为我一直得到一个空白输出。但是,如果我手动为Can';变量scanf_s值的t printf ASCII值,c,printf,scanf,C,Printf,Scanf,尝试获取字符的用户输入值,然后将其显示为ASCII整数。它不想这样做——因为我一直得到一个空白输出。但是,如果我手动为指定一个字符字母,让它正常工作 #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
指定一个字符字母,让它正常工作
#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;
}
#包括“stdafx.h”
#包括
#定义eps 8.85e-12
int main(){
int x=1,y=2,z;
浮动p=2.5,q=4.8;
双a=2.5e-9,b;
煤焦;
z=2*y;
printf(“x/(y+z)=%.1f\n”,(float)x/(y+z));
printf(“获取字母表”);
scanf_s(“%c”和“let”);
printf(“字母表的ASCII值为%d\n”,let);
printf(“插入b的值:”);
扫描频率(“%lf”、&b);
printf(“每股收益/(a*b)的价值=%8.2e\n”,每股收益/(a*b));
返回0;
}
根据:
与scanf
和wscanf
不同,scanf\us
和wscanf\us
要求为c
、c
、s
、s
、或[]code>中包含的字符串控制集的所有输入参数指定缓冲区大小缓冲区大小(以字符为单位)作为附加参数传递,紧跟在指向缓冲区或变量的指针之后。
因此,您需要的是:
scanf_s("%c", &let, sizeof(let));
虽然,与大多数安全功能一样,如果您知道自己在做什么,它们并不比“不安全”功能更安全
请注意,我没有包括真正不安全的变体,如gets(str)
或scanf(“%s”,str)
,但是那些您知道并控制您将消耗多少输入的变体是可以的。scanfu s
为%c
、%s
和%[]。添加另一个值为1的参数。请特别注意还需要传递指定长度参数的类型。我使用scanf_s
的唯一原因是因为VS'13。注意:怀疑您需要eps/((a-'0')*b)
。