代码1
#include<stdio.h>
int main()
{
char a[2],n;
scanf("%s",a);
printf("%s",a);
return 0;
}
代码2
#include<stdio.h>
int main()
{
char a[2],n;
for(n=0;n<=1;n++)
scanf("%c",&a[n]);
for(n=0;n<=1;n++)
printf("%c",a[n]);
return 0;
}
代码1
#include<stdio.h>
int main()
{
char a[2],n;
scanf("%s",a);
printf("%s",a);
return 0;
}
代码2
#include<stdio.h>
int main()
{
char a[2],n;
for(n=0;n<=1;n++)
scanf("%c",&a[n]);
for(n=0;n<=1;n++)
printf("%c",a[n]);
return 0;
}
这就牵扯到scanf函数不安全
的问题了
在VS编译器下,直接使用scanf函数是会报错的,原因就是因为当scanf("%s")输入的时候,并不会检查你的数组是否放得下这串字符串
char arr[2]={'a','b'};
(当你这样定义字符数组的时候,尾部是不会添加'\0'的)而当for循环中的下标为2的时候,就会形成越界访问,程序报错为了解决这个问题,微软在VS编译器下提供了一个更安全的版本scanf_s
。在使用该函数的时候,你可以添加一个输入限制数,以防止产生越界访问的情况
如果对你有帮助,还请点个采纳,万分感谢!