Specifications for printf()
%[-][+][space][#][width][.prec][size]type Field Description - left justify + prefix positive numbers with '+', overrides blank space prefix positive numbers with space # prefix octal or hex with 0, (see manual for Turbo C) width width of output string in total characters, a 0 before width causes padding with zeros on left. .prec decimal precision in characters size F far pointer N near pointer h specifies short l specifies long L long double type c single character d signed decimal integer e signed exponential, 'e' is output in string E signed exponential, 'E' is output in string f signed floating point in form of sddd.ddd g formats e or f (depends on size), e is output G formats e or f (depends on size), E is output i signed decimal integer n integer pointer o unsigned octal integer p void pointer; MS C always uses far pointers, in Turbo C, size is dependent on memory model s string pointer u unsigned decimal integer x unsigned integer in lower case hex format X unsigned integer in upper case hex format - if width or precision are specified as an asterisk '*', an int from the argument list is used as the width or precision. If the width is too small the field is expanded. Example: int len = 5; char *string = "This is a string" printf("%*.*s", len, len, "string"); is functionally similar to a specification string of "%5.5s" which prints a max of 5 characters of the string.