У меня есть структура, которая содержит строку и длину:Printf переменной длина строк Тендерного
typedef struct string {
char* data;
size_t len;
} string_t;
Что все хорошо и денди. Но я хочу иметь возможность выводить содержимое этой структуры с помощью функции printf
. data
может не иметь нулевого терминатора (или иметь его не в том месте), поэтому я не могу просто использовать %s
. Но спецификатор %.*s
требует int
, а у меня есть size_t
.
Итак, вопрос в том, как я могу выводить строку, используя printf
?
Вы можете * конвертировать * a 'size_t' в' int', при условии, что значение подходит ... –
@KerrekSB Ну, если длина не подходит в 'int', это будет один интересный' printf' call :-)) Следует проверить, хотя, поскольку он может переполняться. – cnicutar
Если 'data' может содержать символы, не подлежащие печати (например, нулевой символ), вы не хотите'% s' вообще. Напишите цикл. –