Mam struct, który zawiera ciąg i długości:printf zmiennej String Długość Specyfikator
typedef struct string {
char* data;
size_t len;
} string_t;
Który jest wszystko cacy. Ale chcę mieć możliwość wyprowadzania zawartości tej struktury przy użyciu funkcji podobnej do printf
. data
może nie mieć terminatora nul (lub mieć go w niewłaściwym miejscu), więc nie mogę po prostu użyć %s
. Ale specyfikator %.*s
wymaga int
, a ja mam size_t
.
Pytanie brzmi teraz, w jaki sposób mogę wypisać ciąg znaków przy użyciu printf
?
Można * przekonwertować * wartość 'size_t' na' int', pod warunkiem, że wartość pasuje ... –
@KerrekSB Cóż, jeśli długość nie mieści się w 'int', która będzie jedną ciekawą' printf' zadzwoń :-)) Powinien jednak sprawdzić, ponieważ może przepełnić. – cnicutar
Jeśli 'data' może zawierać znaki niedrukowalne (jak znak null), nie chcesz w ogóle'% s'. Napisz pętlę. –