当前位置: 代码迷 >> C语言 >> 请教一个关于指针的问题。。
  详细解决方案

请教一个关于指针的问题。。

热度:121   发布时间:2007-04-05 16:53:26.0
请教一个关于指针的问题。。
#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[20]="12345",*st2="abcdf";
strcat(st1,st2);
printf("%s",st1);
}
----------------解决方案--------------------------------------------------------
以下是引用cotwin在2007-4-5 17:23:23的发言:
#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);
}


----------------解决方案--------------------------------------------------------

楼上说得对啊


----------------解决方案--------------------------------------------------------
  相关解决方案