C言語のsprintfで繰り返し文字列を連結する場合、どうすればいいですか?

sprintf関数を使用する際に同じ文字列を繰り返し接続している場合は、snprintf関数を代わりに使用することができます。snprintf関数は、接続する文字列の最大長を制限してオーバーフローを防ぐことができます。

サンプルコードは以下の通りです:

#include <stdio.h>

int main() {
    char str[20];
    int a = 10;
    int b = 20;

    snprintf(str, sizeof(str), "%d%d", a, b);
    printf("%s\n", str);

    return 0;
}

上記のコードでは、sprintf 関数をsnprintf関数で代替し、文字列の最大長を20に指定しました。これにより、aとbの長さの合計が20を超えてもオーバーフローが発生せず、文字列の再連結も起こりません。結果は “1020” となります。

bannerAds