请教一个关于指针的问题。。
#include "stdio.h"#include "string.h"
main()
{
char *st1="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);
}
已经超出数组上限,你的程序就相当于下面的
#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);
}