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” となります。