性格悪い人が優勝

sprintfの使用方法に関して質問させていただきます。

sprintfを使用して、
文字と数字を取り扱う場合、
以下の例にもありますように、
%dと%sを使用したりしますが、

(ex)
char test[256];
char num[] = "1234567";
char pg[] = "program";

int i386 = sprintf(buf,"%s%d",pg,num);


例えば、
以下のように、
上記例で、
pgが文字と数字が混在している場合と言うのは、
spintfはどう書き直せば正解なものなのでしょうか?


char test[256];
char num[] = "1234567";
char pg[] = "http://image.blog/test001.gif";

アドバイスいただけますとありがたい次第です。
宜しくお願い致します。

A 回答 (3件)

>int i386 = sprintf(buf,"%s%d",pg,num);


間違っています。
numはchar型配列ですので、%s を指定しないとだめです。

%dが使えるのは、int型変数とかです。
int n = 10;
sprintf(buff, "%d", n);

char型配列に入っているものは %s です。
char n[] = "10";
sprintf(buff, "%s", n);

ですので、
>char pg[] = "​http://image.blog/test001.gif";
はchar型配列に入っているから %s ですね。
    • good
    • 0

そもそもbufってどこから出てきました?


testの間違いかとは思いますが。

なお、char[]で宣言して文字列で値を入れている以上、それは数値ではなく文字列であるので%sで表示するのが正しい、というのは既に出ている通りです。
    • good
    • 0

まず、一番の問題点


>(ex)
>char test[256];
>char num[] = "1234567";
>char pg[] = "program";
>
>int i386 = sprintf(buf,"%s%d",pg,num);
この結果を確認しましたか?

>char num[] = "1234567";
は「数『値』」ではなく'1'~'7'までの半角数字の「文字」を使用した「文字列」です。

なので
>char pg[] = "​http://image.blog/test001.gif";
も、「文字と数『値』」ではなく、「半角文字列」です。
変換の必要は全くありません。
    • good
    • 0

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