Первый аргумент printf()
всегда является строковым значением, известным как строка управления форматом. Эта строка может быть обычным текстом, например
printf("Hello, World\n"); // \n indicates a newline character
или
char greeting[] = "Hello, World\n";
printf(greeting);
Эта строка также может содержать один или несколько спецификаторов преобразования ; эти спецификаторы преобразования указывают, что дополнительные аргументы были переданы printf()
, и они определяют, как форматировать эти аргументы для вывода. Например, я могу изменить вышеупомянутое значение на
char greeting[] = "Hello, World";
printf("%s\n", greeting);
Спецификатор преобразования "% s" ожидает указатель на строку с нулем в конце и форматирует ее как текст.
Для вывода со знаком десятичного целого числа используйте спецификаторы преобразования «% d» или «% i», например
printf("%d\n", addNumber(a,b));
Вы можете смешивать обычный текст со спецификаторами преобразования, например:
printf("The result of addNumber(%d, %d) is %d\n", a, b, addNumber(a,b));
Обратите внимание, что спецификаторы преобразования в строке управления указывают число и типы дополнительных параметров. Если число или типы дополнительных аргументов, переданных в printf()
, не соответствуют спецификаторам преобразования в строке формата, тогда поведение не определено. Например:
printf("The result of addNumber(%d, %d) is %d\n", addNumber(a,b));
приведет к чему-либо от искаженного вывода до прямого сбоя.
Существует ряд дополнительных флагов для спецификаторов преобразования, которые управляют шириной, точностью, заполнением, выравниванием и типами полей. Проверьте ваше удобное справочное руководство C для полного списка.