I learned recently that you can control the number of characters that printf
will show for a string using a precision specifier (assuming your printf
implementation supports this).
There are two ways to approach string-limiting. The first method specifies the number of characters to print inside the format string itself:
// Only 5 characters printed
const char * mystr = "This string is definitely longer than what we want to print.";
printf("Here are first 5 chars only: %.5s\n", mystr);
Note the .5
that is included in the %s
symbol: that tells printf
to print a maximum of five characters (NULL
termination is still valid).
However, you can also control this programmatically, which is useful if the length you want to print is tracked in a variable:
// Only 5 characters printed. When using %.*s, add a value before your string variable to specify the length.
printf("Here are the first 5 characters: %.*s\n", 5, mystr); //5 here refers to # of characters
Using *
as the precision specifier tells printf
that the precision will be provided as a function argument. Simply place your size limit before the string you want to print.
I don’t frequently need this support, but I was dealing with a buffer that was not NULL
-terminated, and I didn’t want printf
walking off the map when printing the data. Perhaps you’ll end up in a similar situation some day!
Very useful. Thank you.
thanks! top of the search list.
Thanks! Saved me a lot of time 🙂
Very nice, thanks for sharing!