谁能告诉我我在这里做错了什么?为什么我的程序会出现段错误?我正在尝试在string1
and之间插入第三个字符串string2
。
#include <stdio.h>
int main (void)
{
char *string1 = "HELLO";
char *string2 = "WORLD";
char *stringX = "++++";
char *string3;
printf ("%s,%s\n",string1,string2);
sprintf(string3,"%s%s%s",string1,stringX,string2);
printf ("NewVar: %s",string3);
}
为什么不sprintf
将结果值存储在 指向的内存地址string3
?它在我声明string3
为普通数组时有效,但在它是指向char
数组的指针时无效。
我以为string3
没有指向任何内存位置,但是当我这样做时似乎确实如此printf("%p",string3);
输出:
# ./concat
HELLO,WORLD,0x40042