输入的字符数超出字符数组的内存空间
#include <stdio.h>
int main()
{
char a[] = "zzzzzz";
char b[5];
printf("%d\n", a);
printf("%d\n", b);
puts(a); //输出:zzzzzz
gets(b); //输入:aaaaaa
puts(a); //输出:a
puts(b); //输出:aaaaaa
return 0;
}
//输出结果:
//6356729 //字符数组a在内存中的首地址
//6356724 //字符数组b在内存中的首地址
//zzzzzz
//aaaaaa
//a //输入字符数组b的字符数超出了b的内存空间,会继续向内存中写入。
//由于字符串是由写入和读取到字符值'\0'来确认终止字符串。
//所以当写入字符超出数组b的内存空间时,会修改数组a中的字符,导致输出的字符串b发生改变
//aaaaaa
//
//Process returned 0 (0x0) execution time : 17.678 s
//Press any key to continue.