int は基本的に先行ゼロを格納します。あなたが直面している問題は、そこにある先行ゼロを印刷していないことです。
もう 1 つの別の方法は、文字列と共に 4 つの int 値を受け取り、数値を含む文字列を返す関数を作成することです。
このアプローチにより、非常にまとまりがよく、副作用がなく、同様の処理が必要な場所で再利用可能なヘルパー関数が得られます。
例えば:
char *joinedIntString (char *pBuff, int int1, int int2, int int3, int int4)
{
pBuff[0] = (int1 % 10) + '0';
pBuff[1] = (int2 % 10) + '0';
pBuff[2] = (int3 % 10) + '0';
pBuff[3] = (int4 % 10) + '0';
pBuff[4] = 0; // end of string needed.
return pBuff;
}
次に、値を出力する必要がある場所で、引数と提供された文字バッファーを使用して関数を呼び出し、文字バッファーを出力するだけです。
このアプローチでは、複数の先行ゼロを持つ不合理な数値がある場合、すべてのゼロを取得します。
または、4 つの int を 1 つの int に結合する関数と、結合された int を先行ゼロと共に出力する別の関数が必要な場合があります。
int createJoinedInt (int int1, int int2, int int3, int int4)
{
return (int1 % 10) * 1000 + (int2 % 10) * 100 + (int 3 % 10) * 10 + (int4 % 10);
}
char *joinedIntString (char *pBuff, int joinedInt)
{
pBuff[0] = ((joinedInt / 1000) % 10) + '0';
pBuff[1] = ((joinedInt / 100) % 10) + '0';
pBuff[2] = ((joinedInt / 10) % 10) + '0';
pBuff[3] = (joinedInt % 10) + '0';
pBuff[4] = 0; // end of string needed.
return pBuff;
}