谁能告诉我这里我做错了什么?为什么我的程序会出现段错误?我想在string1
和之间插入第三个字符串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);
}
Run Code Online (Sandbox Code Playgroud)
为什么不sprintf
将结果值存储在指向的内存地址string3
?它在我声明string3
为普通数组时有效,但在它指向char
数组时则无效.
我以为没有string3
指向任何内存位置,但它确实在我做的时候printf("%p",string3);
输出:
# ./concat
HELLO,WORLD,0x40042
Run Code Online (Sandbox Code Playgroud)