سؤال
بينما أنا أعمل، في مكان ما داخل التعليمات البرمجية رأيت النظم التالية. أنا أشعر بالارتباك بواسطة محدد الشكل في sprintf
d_number = strtol( tmp_buf , (char **)NULL, 16);
memset( tmp_buf , ' ' , sizeof( tmp_buf ) );
sprintf( tmp_buf , "%0.*d" , (int)sizeof( dec_number ) , d_number );
هل يمكن لأي شخص شرح من فضلك؟
المحلول
.*
يعني أن الدقة غير محددة في سلسلة التنسيق، ولكن كوسيطة قيمة عدد صحيح إضافي مسبق الوسيطة التي يجب تنسيقها. (d_number)
نصائح أخرى
يتم استبدال * بواسطة (int) Sizeof (dec_number). إذا كان Dec_number Int، على العديد من الأجهزة هو نفسه٪ 0.4D. هذا ال الاحكام مع طباعة عدد صحيح أو الحد الأقصى لعدد الأرقام للطباعة.
* يمكن أن تظهر على جانبي "."، على سبيل المثال:
sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);
يعمل أيضا.
لا تنتمي إلى StackOverflow