printf("%.*s", length, string);
Используйте вместе с другими аргументами:
printf("integer=%d, string=%.*s, number=%f", integer, length, string, number);
// ^^^^ ^^^^^^^^^^^^^^
В C вы можете указать максимальную длину для вывода в формате %.123s
. Это означает, что длина вывода составляет не более 123 символов. 123
можно заменить на *
, так что длина будет взята из аргумента printf, а не жестко закодирована.
Обратите внимание, что это предполагает, что string
не содержит никаких внутренних нулевых байтов (\ 0), поскольку %.123s
ограничивает только максимальную длину, а не точную длину, и строки по-прежнему рассматриваются как завершенные нулем.
Если вы хотите напечатать строку с нулевым символом в конце с внутренним нулем, вы не можете использовать один printf. Используйте fwrite
вместо:
fwrite(string, 1, length, stdout);
См. @M.S.Dousti's answer для подробного объяснения.