How do I print a non-null-terminated string using printf?
c, printf, string
Solution
printf("%.*s", length, string);
Use together with other args:
printf("integer=%d, string=%.*s, number=%f", integer, length, string, number);
// ^^^^ ^^^^^^^^^^^^^^
In C you could specify the maximum length to output with the `%.123s` format. This means the output length is at most 123 chars. The `123` could be replaced by `*`, so that the length will be taken from the argument of printf instead of hard-coded.
Note that this assumes the `string` does not contain any interior null bytes (\0), as `%.123s` only constrains the maximum length not the exact length, and strings are still treated as null-terminated.
If you want to print a non-null-terminated string with interior null, you cannot use a single printf. Use `fwrite` instead:
fwrite(string, 1, length, stdout);
See @M.S.Dousti's answer for detailed explanation.
Problem
How can I print a non-null-terminated string using printf, assuming that I know the length of the string at runtime?