سؤال

بينما أنا أعمل، في مكان ما داخل التعليمات البرمجية رأيت النظم التالية. أنا أشعر بالارتباك بواسطة محدد الشكل في 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)

http://www.cplusplus.com/Reference/Clibrary/cstdio/printf/

نصائح أخرى

يتم استبدال * بواسطة (int) Sizeof (dec_number). إذا كان Dec_number Int، على العديد من الأجهزة هو نفسه٪ 0.4D. هذا ال الاحكام مع طباعة عدد صحيح أو الحد الأقصى لعدد الأرقام للطباعة.

* يمكن أن تظهر على جانبي "."، على سبيل المثال:

sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);

يعمل أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top