楼主你好。
a不够大,strcat只是将a看作字符串指针,因此没有考虑数组越界,事实上strcat(a,b);之后已经超过了数组a的大小,将b中的数据连接到了数组a最后一个元素的后面。
这已经造成了数组越界,是非法的。
测试程序可以看出:
#include
#include
int main(){
char a[]="window",b[]=" 9x";
printf("%s\n",strcat(a,b));
printf("%d %d\n",sizeof(a)/sizeof(char),strlen(a));
return 1;
}
输出
window 9x
7 9(然后程序提示意外终止)
数组a的大小不会变还是7,但是a里面字符长度已经超越了数组长度。
a 本身不够大,但是你的输出时%s格式的遇到‘\0’才结束,而strcat连接后‘\0’放到了x的后面,所以会输出 window 9x
是的,a是不够大的,这道题很有可能指向考察你strcat的基本功能而已,没考虑内存问题。
这个不会管a的大小,strcat只是一味的在a的后面拼上b的内容。至于会不会越界,这个函数不会管。所以是非安全类函数。不建议使用
strcat(a,b),a的内存肯定是不够的,运行会报错。