'% M' -muunnos tulostaa virhekoodia vastaavan merkkijonon errnossa. Katso Virheilmoitukset. Täten:
fprintf (stderr, "can't open `%s': %m\n", filename);
vastaa:
fprintf (stderr, "can't open `%s': %s\n", filename, strerror (errno));
'% M' -muunnos on GNU C -kirjaston laajennus.
Niin:
printf("%m\n", d);
vastaa
printf("%s\n", strerror (errno), d);
mikä vastaa
printf("%s\n", strerror (errno));
Ota huomioon, että%mei vaadi argumenttia. Tässäprintf("%m\n", d)japrintf("%s\n", strerror (errno), d)on enemmän argumentteja kuin vaaditaan: kanssaprintfjos jäljellä olevia argumentteja on ylimääräisiä, ne vain arvioidaan ja jätetään huomiotta.
Kaikki vastaukset
m
muunnosmääritin ei ole C, mutta on GNU-laajennusprintf
:GNU-dokumentaatiosta:
http://www.gnu.org/software/libc/manual/html_node/Other-Output-Conversions.html
Niin:
vastaa
mikä vastaa
Ota huomioon, että
%m
ei vaadi argumenttia. Tässäprintf("%m\n", d)
japrintf("%s\n", strerror (errno), d)
on enemmän argumentteja kuin vaaditaan: kanssaprintf
jos jäljellä olevia argumentteja on ylimääräisiä, ne vain arvioidaan ja jätetään huomiotta.Leave a Reply