/* * PRINTF -- shows some of the formatting you can do with printf * * Usage: printf (or ./printf) * * Inputs: none * Outputs: various formatted values * Exit Code: 0 because all goes well * * IMPORTANT NOTE: * When you compile this with gcc and -Wall, you get * warnings about bad printfs; those are there for * demonstration * * written for ECS 36A, Fall 2019 * * Matt Bishop, Oct. 11, 2019 * original program written */ #include #include /* * the program */ int main(void) { /* * basic integers */ printf("Here we use %%d to print an integer: %d\n", 1274699); printf("We can use %%x to print it in base 16 (hexadecimal): %x\n", 1274699); printf("\t and %%#x to put 0x in front (customary): %#x\n", 1274699); printf("We can use %%o to print it in base 8 (octal): %o\n", 1274699); printf("\t and %%#o to put 0 in front (customary): %#o\n", 1274699); /* * let's get fancy * * first, a leading sign */ printf("\n\nNow let's get fancy\nFirst comes a sign\n"); printf("%%+d always produces a sign: %+d, %+d\n", 1274699, -1274699); /* * next, field width */ printf("\nNow we'll give a field width \t 123456789012\n"); printf("-- by %%12d, which is wider than the number:\t>%12d<\n", 1274699); printf("-- by %%2d, which is nnarrower than the number:\t>%2d<\n", 1274699); /* * now, alignment (left or right) */ printf("\nNow comes alignment\n"); printf("By default the number is right-aligned: >%12d<\n", 1274699); printf("But a '-' makes the number left--aligned: >%-12d<\n", 1274699); /* * now pad it with zeros */ printf("\nNow comes padding\n"); printf("%%012d pads the field with leading 0s: >%012d<\n", 1274699); printf("%%-012d ignores the 0 (no leading space): >%-012d<\n", 1274699); /* * okay, now come the non-integers */ printf("\n\nNow, let's look at some non-integers\n"); printf("%%f prints a floating point number: %f\n", 3568.234987); printf("%%10.4f prints it with 4 decimal places and in a width of 10: >%10.4f<\n", 3568.234987); printf("%%10.0f prints it without a decimal point in a width of 10: >%10.0f<\n", 3568.234987); printf("%%e prints a floating point number: %e\n", 3568.234987); printf("%%10.4e prints a floating point number: %10.4e\n", 3568.234987); printf("%%10.0e prints it without a decimal point: >%10.0e<\n", 3568.234987); printf("%%g uses %%e or %%f, whichever is more appropriate\n"); printf(" If the number of integer digits is small (%f), you get: %g\n", 3568.234987, 3568.234987); printf(" But if that number is large (%f), you get: %g\n", 12746993568.124987, 12746993568.124987); /* * now come characters and strings */ printf("\n\nCHaracters and strings\n"); printf("%%c prints a character: %c\n", 'A'); printf("\nNow we'll give a field width 123456789012\n"); printf("%%12c prints a character in a field of width 12: >%12c<\n", 'A'); printf("%%12.4c ignores the .4: >%12.4c<\n", 'A'); printf("%%012c ignores the 0: >%012c<\n", 'A'); printf("%%s prints a string: %s\n", "When in the course of human events"); printf("\nNow we'll give a field width 123456789012\n"); printf("%%12s prints a string in a field of width 12: >%12s<\n", "When in the course of human events"); printf("%%12.4s prints the first 4 characters in a field of width 12: >%12.4s<\n", "When in the course of human events"); printf("%%-12.4s right-justifies it: >%-12.4s<\n", "When in the course of human events"); printf("%%012s ignores the 0: >%012s<\n", "When in the course of human events"); /* * Th-th-that's all, folks! */ return(0); }