strcat问题出现.......
tc2.0
#include<stdio.h>
#include <string.h>
main()
{
char s[4][4]={"aef","gasw"};
strcat(s[0],s[1]);
puts(s[0]);
}
输入时s[1]不越界限???(没'\0')怎么?
strcat(s[0],s[1]);更不越界限,?????????????????
虽然是连续存储 但字串后面系统都会加一个'\0'的啊 当输出第一个字符串后 遇到'\0'都就应该结束了嘛 怎么会继续输出呢????
这就是越界导致程序崩溃的一个实例啦
拿上面一个例子说明一下,
#include<stdio.h>
#include <string.h>
main()
{
char s[4][4]={"aef","gasw","haha"};
puts(s[0]);puts(s[1]);puts(s[2]);
}
s[1]越界,其'\0'放在了s[2]的首地址,但在初始化s[2]时,s[1]放在s[2]首地址中的'\0'被'h'覆盖掉了,所以这时s[1]在输出时要继续寻找'\0',刚好找到s[2]的结尾,有个'\0',这时输出的s[1]就是gaswhaha了.