以前「【C言語】sprintfでの注意点」ということで、
オーバーフローの危険性を書かせて頂きましたが、今回はその回避策について。
結論から言うとsnprintfを使います。
int snprintf(char* restrict s, size_t n, const char* restrict format, ... );
文字の配列へ、変換指定に沿って変換された文字列を、指定文字数以下だけ出力するという標準関数です。
size_t に’\0′ を含めた格納する最大文字数を指定できるため、
格納先と格納する文字数を意識してプログラミングすることができます。
書き込む最大文字数を指定すること以外はsprintf関数と同じ機能を持っているため、
基本的にsnprintfを使用して意図しないエラーを極力回避することが望ましいかと思います。