c - Qual é o significado do especificador de formatação% m?

Translate

A saída para este código imprimiu 'Sucesso'.

printf("%m\n");
This question and all comments follow the "Attribution Required."

Todas as respostas

Translate

mespecificador de conversão não é C, mas é uma extensão GNU paraprintf:

Da documentação GNU:

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

A conversão '% m' imprime a string correspondente ao código de erro em errno. Consulte Mensagens de erro. Portanto:

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

é equivalente a:

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

A conversão '% m' é uma extensão da Biblioteca C GNU.

Então:

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

é equivalente a

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

que é equivalente a

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

Observe que%mnão requer um argumento. Aquiprintf("%m\n", d)eprintf("%s\n", strerror (errno), d)tem mais argumentos do que o necessário: comprintfse houver argumentos extras extras, eles serão avaliados e ignorados.

Fonte
Leave a Reply
You must be logged in to post a answer.
Sobre o autor