1
私は左のパッドをcで使用しています。下は実装コードです。右側のパッドの文字列に0が入ります
unsigned char* LeftPadZero(unsigned char fa[], int flen)
{
unsigned char *fout;
int sz;
sz = snprintf(NULL,0,"%s",fa);
fout = (unsigned char*)malloc(flen+sz+1);
if(flen > 0)
{
sprintf((char*)fout,"%0*d%s", flen , 0, fa);
}
else if(flen == 0)
{
fout = fa;
}
else
{
printf("Length of number is negative\n");
return NULL;
}
return fout;
}
これで、右ゼロパッドで同じことをしようとしています。しかし、0でパディングするのではなく、長さが印刷されます。 EX:それは私の場合をprint.Inすべきstring000この方法は、それは長さ引数が前にデータ引数でなければなりません
unsigned char* RightPadZero(unsigned char fa[], int flen)
{
unsigned char *fout;
int sz;
sz = snprintf(NULL,0,"%s",fa);
fout = (unsigned char*)malloc(flen+sz+1);
if(flen > 0)
{
sprintf((char*)fout,"%s%0*d", fa , 0, flen);
}
else if(flen == 0)
{
fout = fa;
}
else
{
printf("Length of number is negative\n");
return NULL;
}
return fout;
}
ありがとうございました。 –