sscanf
C99 でのバッファ オーバーラン防止に役立つ文字列リテラルを作成しようとしています。目標は次のようなものです。
#define MAX_ARG_LEN 16
char arg[MAX_ARG_LEN] = "";
if (sscanf(arg, "%"(MAX_ARG_LEN-1)"X", &input) > 0)
明らかな「手動」ソリューションは次のようなものです。
#define MAX_ARG_LEN 16
#define MAX_ARG_CHARS "15"
char arg[MAX_ARG_LEN] = "";
if (sscanf(arg, "%"MAX_ARG_CHARS"X", &input) > 0)
ただし、バッファー サイズが 16 の場合に "%15X" を自動的に生成する方法をお勧めします。
提案?