2013-12-13 18 views

cevap

33

m dönüşüm belirteci Cı değil printf bir GNU:

GNU belgelerine:

http://www.gnu.org/software/libc/manual/html_node/Other-Output-Conversions.html

% m dönüşümü karşılık gelen dizge basar errno hata koduna. Hata Mesajları.

fprintf (stderr, "can't open `%s': %s\n", filename, strerror (errno)); 

% m dönüşüm Önceki XIV oluşumudur: Böylece: için

fprintf (stderr, "can't open `%s': %m\n", filename); 

eşdeğerdir.

Yani:

printf("%m\n", d); 

%m bir argüman gerektirmediğini

printf("%s\n", strerror (errno)); 

Not eşdeğerdir hangi

printf("%s\n", strerror (errno), d); 

eşdeğerdir. Burada printf("%m\n", d) ve printf("%s\n", strerror (errno), d), gerekenden daha fazla argümana sahiptir: printf ile, daha fazla argüman varsa, bunlar değerlendirilir ve yoksayılır.

+2

Bence en ilginç kısım, printf'in * her *% m' için ekstra bir parametre gerektirmediğidir. – luiscubal

+0

@luiscubal benim görüşüme bak – ouah

+0

@ouah tamam, teşekkürler! – Manuel