出于某种原因,我无法从我在visual studio 2013中使用的scanf_s写入ch char类型。我试过间隔"%c"两种方式" %C"并尝试了scanf和scanf_s。我迷路了。
// Alphabetic Pyramid Program - The Egyptians must have used C!
#include <stdio.h>
int main(void)
{
char ch;
printf("Enter the letter that will be the foundations of your Aphabetic Pyramid:\n"); // User is promted to enter a letter
scanf_s(" %c", &ch); // User inputs Foundational_letter
printf("The code for %c is %d!\n", ch, ch);
getchar();
getchar();
return 0;
}
答案 0 :(得分:4)
scanf_s需要%c
说明符的两个参数:接收地址和大小,即1:
scanf_s(" %c", &ch, 1);
按照设计,所有安全版本的scanf(以_s
结尾的那些)都需要一些参数来指定当它是类型字符串(%s)和char(%c)时为接收输入保留多少缓冲区空间)。即对于%s
,您将指定缓冲区地址及其保留大小。
如果您不应用这些规则,请预期未定义的行为。