#include "string.h"
main()
{
char *st1="12345",*st2="abcdf";
strcat(st1,st2);
printf("%s",st1);
}
这段程序不能正常运行。。。为什么啊???
----------------解决方案--------------------------------------------------------
第一个数组无法容纳第二个字符串.
----------------解决方案--------------------------------------------------------
我也看不出来有什么错误
----------------解决方案--------------------------------------------------------
#include "stdio.h"
#include "string.h"
main()
{
char st1[20]="12345",*st2="abcdf";
strcat(st1,st2);
printf("%s",st1);
}
----------------解决方案--------------------------------------------------------
#include "stdio.h"
#include "string.h"
main()
{
char st1[20]="12345",*st2="abcdf";
strcat(st1,st2);
printf("%s",st1);
}
我也知道你这个是对的啊。。。
但我就是不知道下面的为什么错。。。
#include "stdio.h"
#include "string.h"
main()
{
char *st1="12345",*st2="abcdf";
strcat(st1,st2);
printf("%s",st1);
}
----------------解决方案--------------------------------------------------------
我前几天也遇到过这样的问题
*st1="12345",*st2="abcdf";
可能是系统给st1和st2分配空间刚刚够没预留位置
而st1[20]系统给了20个字符的空间,没用完的话就可以给后面加
----------------解决方案--------------------------------------------------------
已经超出数组上限,你的程序就相当于下面的
#include "stdio.h"
#include "string.h"
main()
{
char *st1,a[]="12345",*st2,b[]="abcdf";
st1=a;
st2=b;
strcat(st1,st2);
printf("%s",st1);
}
在你给指针ST1赋字符串的值时,系统给字符串分配了相应的空间,大小等于字符串的长度+1,你再复制的时候,已经超出上限,所以会出现问题,改成下面的就可以了
#include "stdio.h"
#include "string.h"
main()
{
char *st1,a[20]="12345",*st2,b[10]="abcdf";
st1=a;
st2=b;
strcat(st1,st2);
printf("%s",st1);
}
----------------解决方案--------------------------------------------------------
楼上说得对啊
----------------解决方案--------------------------------------------------------