2x24bit tamsayıyı sprintf
aracılığıyla sprintf
aracılığıyla dönüştüren bir programım var ve bunları 58 bit bir sayıyı temsil eden bir dizeye koyun. Programı: 1FFFFF2FFFFF
ama çıkışı: her şey yolunda 1FFFFF2FFFFF2FFFFF
ben kısaltarak res_all
res_all[6]
içinprintf/sprintf delilik (spontan birleştirme)
int buffer_h = 0x001FFFFF;
int buffer_l = 0x002FFFFF;
int i,j = 0;
char res_h[10];
char res_l[10];
char res_all[12];
sprintf(res_h,"%06X",buffer_h);
sprintf(res_l,"%06X",buffer_l);
for(i=0;i<6;i++) {
res_all[i] = res_h[i];
}
for(i=0;i<6;i++) {
res_all[i+6] = res_l[i];
}
printf("%s",res_all);
Belki res_all
çıkış yüzden 6 + 6 = 12 karakter res_h+res_l
olduğunu düşünüyorum.
Ancak bir 6 karakter dizesi 18 karaktere nasıl yazdırılabilir?
'res_all'da bir nullchar terminator, başarı şansınızı artırabilir * önemli ölçüde *. Bu ve tamponlarınızın düzgün boyutlandırılması. – WhozCraig
@WhozCraig ne dedi. Alternatif olarak, açık bir şekilde kesin olarak belirterek boş sonlandırılmayan bir char arabellek yazdırabilirsiniz: printf ("%. 12s", res_all); "(null sonlandırılmış dizenin yapılması) birçok standart işlevle kullanılmasına izin verir. Yani, bu daha iyi bir yaklaşım.) –