C语言新手求教vs2013基础问题

#include

int main()
{
char a;
scanf_s("%c", &a);
printf(" %c\n" ,a);
}
为什么不能输出a啊

scanf_s要加接收字符个数

 scanf_s("%c", &a,1);

ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存访问越界,例如分配了5字节的空间但是读入了10字节
char buf[5]={'\0'};
scanf("%s", buf);
如果输入1234567890,后面的部分会被写到别的空间上去。
以上代码如果用scanf_s,第二行应改为scanf_s("%s",buf,5),表示最多读取4个字符,因为buf[4]要放'\0'
scanf_s最后一个参数是缓冲区的大小,表示最多读取n-1个字符.
(来源百度百科~)

#include