c - Что означает спецификатор форматирования% m?

Translate

На выходе этого кода было напечатано «Успех».

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

Все ответы

Translate

mспецификатор преобразования - это не C, а расширение GNU дляprintf:

Из документации GNU:

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

Преобразование "% m" выводит строку, соответствующую коду ошибки в errno. См. Сообщения об ошибках. Таким образом:

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

эквивалентно:

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

Преобразование "% m" является расширением библиотеки GNU C.

Так:

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

эквивалентно

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

что эквивалентно

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

Обратите внимание, что%mне требует аргументов. Вотprintf("%m\n", d)иprintf("%s\n", strerror (errno), d)иметь больше аргументов, чем требуется: сprintfесли есть дополнительные завершающие аргументы, они просто оцениваются и игнорируются.

Источник
Leave a Reply
You must be logged in to post a answer.
Об авторе