Is there a way to specify how many characters of a string to print out using printf()?

T.T.T. picture T.T.T. · Feb 10, 2010 · Viewed 114.8k times · Source

Is there a way to specify how many characters of a string to print out (similar to decimal places in ints)?

printf ("Here are the first 8 chars: %s\n", "A string that is more than 8 chars");

Would like it to print: Here are the first 8 chars: A string

Answer

Jonathan Leffler picture Jonathan Leffler · Feb 10, 2010

The basic way is:

printf ("Here are the first 8 chars: %.8s\n", "A string that is more than 8 chars");

The other, often more useful, way is:

printf ("Here are the first %d chars: %.*s\n", 8, 8, "A string that is more than 8 chars");

Here, you specify the length as an int argument to printf(), which treats the '*' in the format as a request to get the length from an argument.

You can also use the notation:

printf ("Here are the first 8 chars: %*.*s\n",
        8, 8, "A string that is more than 8 chars");

This is also analogous to the "%8.8s" notation, but again allows you to specify the minimum and maximum lengths at runtime - more realistically in a scenario like:

printf("Data: %*.*s Other info: %d\n", minlen, maxlen, string, info);

The POSIX specification for printf() defines these mechanisms.