10代と話して驚いたこと

ポインタ変数で宣言された3つ以上の文字列を連結したいのです。
そこで

char *str1 = "Hello,";
char *str2 = "Mr.";
char *str3 = "Brown.";
char msg[100];

strcat(msg,strcat(str1,strcat(str2,str3)));

printf(msg);

としたがやっぱり駄目でした。
strcat(str2,str3)からして駄目なんだとはなんとなくわかるのですが
どうしたら解決できるのかわかりません。
結果的には
printf(msg);
->Hello,Mr.Brown.
としたいのです。解決案をご教授いただけないでしょうか。
お願いいたします。

A 回答 (2件)

それを書くなら、


strcpy(msg, str1);
strcat(msg, str2);
strcat(msg, str3);
または、
strcat(strcat(strcpy(msg, str1), str2), str3);
では。

(puts等でなく)printf使うなら、
printf("%s%s%s, str1, str2, str3);
でも大差ない気がしますが。

# オーバフローにはくれぐれもご注意を。
    • good
    • 0
この回答へのお礼

なるほど!うまくできました&よくわかりました!
ありがとうございました!

お礼日時:2007/05/27 05:10

失礼、


printf("%s%s%s", str1, str2, str3);
ですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報