Scanf函数输入字符串
#define _CRT_SECURE_NO_WARNINGS //#pragma warning(disable:4996)
#include <stdio.h>
#include <stdlib.h> int main()
{
char a[] = { };
scanf("%s", a);
char b[] = { };
scanf("%s", b);
char c[] = { };
int index = ;
while (a[index])
{
c[index] = a[index];
index++;
}
int index_b = ;
while (b[index_b])
{
c[index + index_b] = b[index_b];
index_b++;
}
printf(" %s\n ",c); system("pause");
return ;
}
运行结果:
scanf()在vs2015上会提示安全问题,两种方法屏蔽
第一种:#define _CRT_SECURE_NO_WARNINGS 第二种:#pragma warning(disable:4996) 为什么提示不安全,不让我们用scanf()这个函数呢?
看例子:
#define _CRT_SECURE_NO_WARNINGS //#pragma warning(disable:4996)
#include <stdio.h>
#include <stdlib.h> int main()
{
char c[] = { };
scanf("%s",c);
printf("%s",c); system("pause");
return ;
}
当我输入超出了数组范围的值的情况下:
Run-Time Check Failure #2 - Stack around the variable 'c' was corrupted. 翻译:运行时检查失败# 2 -堆栈变量“c”是损坏的。
这就是“缓冲区溢出”