ここで私が間違っていることを誰か教えてもらえますか? プログラムが segfault を起こすのはなぜですか? string1
と の間に3 番目の文字列を挿入しようとしてい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