小编Air*_*irL的帖子

C sprintf数组char指针

谁能告诉我这里我做错了什么?为什么我的程序会出现段错误?我想在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)

c arrays pointers

11
推荐指数
4
解决办法
4万
查看次数

标签 统计

arrays ×1

c ×1

pointers ×1