2010-02-08 19 views
5

yerde kod içine ben aşağıdaki staements gördük. Kimsenin lütfen açıklayabilir sprintfC biçim belirteci

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 ); 

yılında biçim belirteci karıştı yok ki?

+1

@qrdl: ve bunu nasıl, tam olarak yararlıdır? Notu kaçırmış olabilirsiniz, ancak SO asla Google’a basit bir bağlantı olarak tasarlanmamıştır. Büyük ve küçük programlama sorularına cevaplar içermesi amaçlandı. Katkıda bulunmak için yararlı bir şeyiniz yoksa yorum yapmayın. İlk hit @jalf – jalf

+2

printf hakkında Wikipedia makalesine olduğunu ve tüm biçim belirteçleri ve genişlik params listeler. Umarım bu, yorumumun yardımcı olmasıyla ilgili sorularınızı yanıtlar. Şiddetle bilgiyi bulmak için yeteneği (herhangi bir mühendis gibi) iyi programcı en güçlü özelliklerinden biri olduğuna inanıyoruz, bu yüzden bir olta ziyade balık vermeyi tercih ederim. Programcı olmaktan gurur duyuyorum ve zanaatımı ucuzlayan insanları sevmiyorum. Evet, ve lütfen bu notun bir kopyasını aldığımdan emin ol, Bay Lumbergh. – qrdl

+0

@qdrl: Yapıyor. Yorumunuz yardımcı olmadı. SO'nın belirtilen hedeflerinden biri, * insanlara bunu google'a söylemeden * cevaplar vermektir. Ama söyle, insanlar stackoverflow.com'a gidip "printf formatı belirleyicileri" yazıyorlarsa, "zanaatını ucuzlaştırıyor", ama google ya da wikipedia'ya gidip * tam olarak * aynı şeyi yaparlarsa, buna değer ve tamamen farklıdır? İyi bir programcının ayırt edici özelliği, bilgi aramak için * ilgili * siteye gideceğini söyleyebilirim. Programlama soruları için SO, Wikipedia'dan daha alakalı bir sitedir, değil mi? – jalf

cevap

0

* ile ikame edilir (int) sizeof (dec_number). Dec_number bir int ise, birçok makinede% 0.4d ile aynıdır. Bu tamsayı veya baskı maksimum basamak sayıda baskı hangi hassas olup. ""

* örneğin her iki tarafında görünebilir:

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

da çalışır.