/* main.c * Test driver for dinkprnt.c program */ #include #include #include "../../dinkusr.h" #define printf dink_printf int main() { int dink_printf(const char *fmt, ...); /* prototype */ int n = 0; /* Test the available format types %c Single character %d Signed decimal number %e Floating-point number, e-notation %E Floating-point number, E-notation %f Floating-point number, decimal notation %g Use %f or %e, whichever is shorter %G Use %f or %E, whichever is shorter %i Signed decimal integer %o Unsigned octal number %p A pointer %s Character string %u Unsigned decimal integer %x Unsigned hexadecimal integer, using hex digits 0-f %X Unsigned hexadecimal integer, using hex digits 0-F %% A percent sign */ set_up_transfer_base(); /* get dink transfer table address */ printf("V1.0 printf tester 11/11/99\n"); printf( "T: 0 Test format %%c Expect: a\n"); printf( "T: %d Result : %c\n",n++,'a'); printf( "T: 1 Test format %%d Expect: 1234\n"); printf( "T: %d Result : %d\n",n++,1234); printf( "T: 2 Test format %%f Expect: 123456.789876\n"); printf( "T: %d Result : %f\n",n++,123456.789876); printf( "T: 3 Test format %%e Expect: 6.543217e+06\n"); printf( "T: %d Result : %e\n",n++,6543217.89876); printf( "T: 4 Test format %%E Expect: 2.345677E+05\n"); printf( "T: %d Result : %E\n",n++,234567.789876); printf( "T: 5 Test format %%g Expect: 3.456787e+07\n"); printf( "T: %d Result : %g\n",n++,34567878.9876); printf( "T: 6 Test format %%G Expect: 2.345617E+09\n"); printf( "T: %d Result : %G\n",n++,2345617898.76); printf( "T: 7 Test format %%i Expect: 5\n"); printf( "T: %d Result : %i\n",n++,5); printf( "T: 8 Test format %%o Expect: 36\n"); printf( "T: %d Result : %o\n",n++,036); printf( "T: 9 Test format %%p Expect: 90abcdef\n"); printf( "T: %d Result : %p\n",n++,0x90abcdef); printf( "T: 10 Test format %%s Expect: Now is the time\n"); printf( "T: %d Result : %s\n",n++,"Now is the time"); printf( "T: 11 Test format %%u Expect: 1234\n"); printf( "T: %d Result : %u\n",n++,1234); printf( "T: 12 Test format %%x Expect: abcd0123\n"); printf( "T: %d Result : %x\n",n++,0xabcd0123); printf( "T: 13 Test format %%X Expect: ABCD0123\n"); printf( "T: %d Result : %X\n",n++,0xABCD0123); printf( "T: 14 Test format %% Expect: %%\n"); printf( "T: %d Result : %%\n",n++); printf( "T: 15 Test bad format %%NULL Expect: \n"); printf( "T: %d Result : %",n++); printf( "\n"); printf( "T: 16 Test bad format %%7.6 Expect: \n"); printf( "T: %d Result : %7.6\n",n++); printf( "T: 17 Test bad format %%#0 Expect: \n"); printf( "T: %d Result : %#0\n",n++); /* Test the range of potential numeric values char 0 .. 255 int -2147483648 .. 2147483647 signed long -2147483648 .. 2147483647 unsigned long 0 .. 4294967295 float 1.1754943635e-38 .. 3.4028235e+38 double 2.2250738585072015e-308 .. 1.7976931348623158e+308 */ n = 100; printf( "T: 100 Test range %%c Expect: a\n"); printf( "T: %d Result : %c\n",n++,'a'); printf( "T: 101 Test range %%c Expect: a\n"); printf( "T: %d Result : %c\n",n++,97); printf( "T: 102 Test range %%c Expect: \n"); printf( "T: %d Result : %c\n",n++,127); printf( "T: 103 Test range %%c Expect: €\n"); printf( "T: %d Result : %c\n",n++,128); printf( "T: 104 Test range %%i Expect: -2147483648\n"); printf( "T: %d Result : %i\n",n++,-2147483648); printf( "T: 105 Test range %%i Expect: 2147483647\n"); printf( "T: %d Result : %i\n",n++,2147483647); printf( "T: 106 Test range %%d Expect: -2147483648\n"); printf( "T: %d Result : %i\n",n++,-2147483648); printf( "T: 107 Test range %%d Expect: 2147483647\n"); printf( "T: %d Result : %i\n",n++,2147483647); printf( "T: 108 Test range %%u Expect: 0\n"); printf( "T: %d Result : %u\n",n++,0); printf( "T: 109 Test range %%u Expect: 4294967295\n"); printf( "T: %d Result : %u\n",n++,4294967295); printf( "T: 110 Test range %%f Expect: 0.000000\n"); printf( "T: %d Result : %f\n",n++,0.000000); printf( "T: 111 Test range %%f Expect: 0.000001\n"); printf( "T: %d Result : %f\n",n++,0.000001); printf( "T: 112 Test range %%f Expect: 0.100000\n"); printf( "T: %d Result : %f\n",n++,0.1); printf( "T: 113 Test range %%f Expect: 0.100002\n"); printf( "T: %d Result : %f\n",n++,0.100002); printf( "T: 114 Test range %%f Expect: 1.200000\n"); printf( "T: %d Result : %f\n",n++,1.2); printf( "T: 115 Test range %%f Expect: 1.200003\n"); printf( "T: %d Result : %f\n",n++,1.200003); printf( "T: 116 Test range %%f Expect: 12.300004\n"); printf( "T: %d Result : %f\n",n++,12.300004); printf( "T: 117 Test range %%f Expect: 1234.500000\n"); printf( "T: %d Result : %f\n",n++,1234.5); printf( "T: 118 Test range %%f Expect: 1234.500006\n"); printf( "T: %d Result : %f\n",n++,1234.500006); printf( "T: 119 Test range %%f Expect: 9876.500004\n"); printf( "T: %d Result : %f\n",n++,9876.500004); printf( "T: 120 Test range %%f Expect: -9876.500004\n"); printf( "T: %d Result : %f\n",n++,-9876.500004); printf( "T: 121 Test range %%f Expect: -1234.500006\n"); printf( "T: %d Result : %f\n",n++,-1234.500006); printf( "T: 122 Test range %%f Expect: -1234.500000\n"); printf( "T: %d Result : %f\n",n++,-1234.5); printf( "T: 123 Test range %%f Expect: -12.300004\n"); printf( "T: %d Result : %f\n",n++,-12.300004); printf( "T: 124 Test range %%f Expect: -1.200003\n"); printf( "T: %d Result : %f\n",n++,-1.200003); printf( "T: 125 Test range %%f Expect: -0.100002\n"); printf( "T: %d Result : %f\n",n++,-0.100002); printf( "T: 126 Test range %%f Expect: -0.100000\n"); printf( "T: %d Result : %f\n",n++,-0.1); /* Test the available conversion specifiers flag (see below) digit(s) Minimum field width .digit(s) Precision h Used with integer conversion to indicate a short int l Used with integer conversion to indicate a long int L Used with a floating-point conversion to indicate a long double */ n = 200; printf( "T: 200 Test minimum %%4i Expect: 1\n"); printf( "T: %d Result : %4i\n",n++,1); printf( "T: 201 Test minimum %%3i Expect: 22\n"); printf( "T: %d Result : %3i\n",n++,22); printf( "T: 202 Test minimum %%2i Expect: 127\n"); printf( "T: %d Result : %2i\n",n++,127); printf( "T: 203 Test minimum %%1i Expect: 6789\n"); printf( "T: %d Result : %1i\n",n++,6789); printf( "T: 204 Test minimum %%11i Expect: -2147483648\n"); printf( "T: %d Result : %11i\n",n++,-2147483648); printf( "T: 205 Test minimum %%10i Expect: 2147483647\n"); printf( "T: %d Result : %10i\n",n++,2147483647); printf( "T: 206 Test minimum %%13d Expect: -2147483648\n"); printf( "T: %d Result : %13i\n",n++,-2147483648); printf( "T: 207 Test minimum %%13d Expect: 2147483647\n"); printf( "T: %d Result : %13i\n",n++,2147483647); printf( "T: 208 Test minimum %%8u Expect: 0\n"); printf( "T: %d Result : %8u\n",n++,0); printf( "T: 209 Test minimum %%2u Expect: 4294967295\n"); printf( "T: %d Result : %2u\n",n++,4294967295); printf( "T: 210 Test minimum %%4f Expect: 0.000000\n"); printf( "T: %d Result : %4f\n",n++,0.000000); printf( "T: 211 Test minimum %%7f Expect: 0.000001\n"); printf( "T: %d Result : %7f\n",n++,0.000001); printf( "T: 212 Test precision %%6.4f Expect: 0.1000\n"); printf( "T: %d Result : %6.4f\n",n++,0.1); printf( "T: 213 Test precision %%2.1f Expect: 0.1\n"); printf( "T: %d Result : %2.1f\n",n++,0.100002); printf( "T: 214 Test precision %%6.2f Expect: 1.20\n"); printf( "T: %d Result : %6.2f\n",n++,1.2); printf( "T: 215 Test precision %%6.2f Expect: 1.20\n"); printf( "T: %d Result : %6.2f\n",n++,1.200003); printf( "T: 216 Test precision %%12.6f Expect: 12.300004\n"); printf( "T: %d Result : %12.6f\n",n++,12.300004); printf( "T: 217 Test precision %%4.2f Expect: 1234.50\n"); printf( "T: %d Result : %4.2f\n",n++,1234.5); printf( "T: 218 Test precision %%7.6f Expect: 1234.500006\n"); printf( "T: %d Result : %7.6f\n",n++,1234.500006); printf( "T: 219 Test precision %%10.6f Expect: 9876.500004\n"); printf( "T: %d Result : %10.6f\n",n++,9876.500004); printf( "T: 220 Test precision %%10.6f Expect: -9876.500004\n"); printf( "T: %d Result : %10.6f\n",n++,-9876.500004); printf( "T: 221 Test precision %%2.2f Expect: -1234.50\n"); printf( "T: %d Result : %2.2f\n",n++,-1234.500006); printf( "T: 222 Test precision %%6.2f Expect: -1234.50\n"); printf( "T: %d Result : %6.2f\n",n++,-1234.5); printf( "T: 223 Test precision %%5.3f Expect: -12.300\n"); printf( "T: %d Result : %5.3f\n",n++,-12.300004); printf( "T: 224 Test precision %%1.6f Expect: -1.200003\n"); printf( "T: %d Result : %1.6f\n",n++,-1.200003); printf( "T: 225 Test precision %%7.6f Expect: -0.100002\n"); printf( "T: %d Result : %7.6f\n",n++,-0.100002); printf( "T: 226 Test precision %%1.0f Expect: -0\n"); printf( "T: %d Result : %1.0f\n",n++,-0.1); printf( "T: 227 Test precision %%1.f Expect: 0\n"); printf( "T: %d Result : %1.f\n",n++,-0.0); printf( "T: 228 Test precision %%1.f Expect: -0\n"); printf( "T: %d Result : %1.f\n",n++,-0.1); /* Test the available flags - item is left justified + Signed values displayed with "+" or "-" space Signed vlaues are displayed with a leading space (but no sign) if positive and with a minus sign if negative # Use an alternate for the conversion specification 0 For numeric forms, padd the field width with leading zeroes. */ n = 300; printf( "T: 300 Test flag %%-4i Expect: 1 \n"); printf( "T: %d Result : %-4i\n",n++,1); printf( "T: 301 Test flag %%03i Expect: 022\n"); printf( "T: %d Result : %03i\n",n++,22); printf( "T: 302 Test flag %%+2i Expect: -12\n"); printf( "T: %d Result : %+2i\n",n++,-12); printf( "T: 303 Test flag %%+2i Expect: +12\n"); printf( "T: %d Result : %+2i\n",n++,12); printf( "T: 304 Test flag %% 11i Expect: -2147483648\n"); printf( "T: %d Result : % 11i\n",n++,-2147483648); printf( "T: 305 Test flag %% 11i Expect: 2147483647\n"); printf( "T: %d Result : % 11i\n",n++,2147483647); printf( "T: 306 Test flag %%013d Expect: -002147483648\n"); printf( "T: %d Result : %013i\n",n++,-2147483648); printf( "T: 307 Test flag %%013d Expect: 0002147483647\n"); printf( "T: %d Result : %013i\n",n++,2147483647); printf( "T: 308 Test flag %%#8u Expect: 0\n"); printf( "T: %d Result : %#8u\n",n++,0); printf( "T: 309 Test flag %%#2u Expect: 4294967295\n"); printf( "T: %d Result : %#2u\n",n++,4294967295); printf( "T: 310 Test flag %%-10f Expect: 0.000000 \n"); printf( "T: %d Result : %-10f\n",n++,0.000000); printf( "T: 311 Test flag %%#7.0f Expect: 0.\n"); printf( "T: %d Result : %#7.0f\n",n++,0.000001); printf( "T: 312 Test flag %%07.4f Expect: 00.1000\n"); printf( "T: %d Result : %07.4f\n",n++,0.1); printf( "T: 313 Test flag %%+2.1f Expect: 0.1\n"); printf( "T: %d Result : %2.1f\n",n++,0.100002); printf( "T: 314 Test flag %%06.2f Expect: 001.20\n"); printf( "T: %d Result : %06.2f\n",n++,1.2); printf( "T: 315 Test flag %% 6.2f Expect: 1.20\n"); printf( "T: %d Result : % 6.2f\n",n++,1.200003); printf( "T: 316 Test flag %%-12.6f Expect: 12.300004 \n"); printf( "T: %d Result : %-12.6f\n",n++,12.300004); printf( "T: 317 Test flag %% +4.2f Expect: +1234.50\n"); printf( "T: %d Result : % +4.2f\n",n++,1234.5); printf( "T: 318 Test flag %% 7.6f Expect: 1234.500006\n"); printf( "T: %d Result : % 7.6f\n",n++,1234.500006); printf( "T: 319 Test flag %%+10.6f Expect: +9876.500004\n"); printf( "T: %d Result : %+10.6f\n",n++,9876.500004); printf( "T: 320 Test flag %%+10.6f Expect: -9876.500004\n"); printf( "T: %d Result : %+10.6f\n",n++,-9876.500004); printf( "T: 321 Test flag %% 2.2f Expect: -1.50\n"); printf( "T: %d Result : % 2.2f\n",n++,-1.500006); printf( "T: 322 Test flag %%-8.2f Expect: -1234.50\n"); printf( "T: %d Result : %-8.2f\n",n++,-1234.5); printf( "T: 323 Test flag %%+5.3f Expect: -12.300\n"); printf( "T: %d Result : %+5.3f\n",n++,-12.300004); printf( "T: 324 Test flag %%-1.6f Expect: -1.200003\n"); printf( "T: %d Result : %-1.6f\n",n++,-1.200003); printf( "T: 325 Test flag %% 7.6f Expect: -0.100002\n"); printf( "T: %d Result : % 7.6f\n",n++,-0.100002); printf( "T: 326 Test flag %%#1.0f Expect: -0.\n"); printf( "T: %d Result : %#1.0f\n",n++,-0.1); printf( "T: 327 Test flag %%01.f Expect: 0\n"); printf( "T: %d Result : %01.f\n",n++,-0.0); printf( "T: 328 Test flag %%0-1.f Expect: -0\n"); printf( "T: %d Result : %0-1.f\n",n++,-0.1); printf( "T: 329 Test flag %%#08x Expect: 0x001234\n"); printf( "T: %d Result : %#08x\n",n++,0x1234); printf( "T: 330 Test flag %%#x Expect: 0xabcd0123\n"); printf( "T: %d Result : %#x\n",n++,0xabcd0123); printf( "T: 331 Test flag %%#X Expect: 0XABCD0123\n"); printf( "T: %d Result : %#X\n",n++,0xABCD0123); /* * Test the inclusion of multiple formats in a single printf */ n = 400; printf( "T: 400 Format %%c %%c %%c Expect: a b c\n"); printf( "T: %d Result : %c %c %c\n",n++,'a','b','c'); printf( "T: 401 Format %%d %%d %%d Expect: 1234 5678 90\n"); printf( "T: %d Result : %d %d %d\n",n++,1234,5678, 90); printf( "T: 402 Format %%f %%3.1f %%f Expect: 1.234567 4.3 -7.623000\n"); printf( "T: %d Result : %f %3.1f %f\n",n++, \ 1.234567,4.3,-7.623); printf( "T: 403 Format %%i %%i %%i Expect: 5 6 7\n"); printf( "T: %d Result : %i %i %i\n",n++,5,6,7); printf( "T: 404 Format %%o %%p %%s Expect: 36 1a2b3c4d Now\n"); printf( "T: %d Result : %o %p %s\n",n++,036, \ 0x1a2b3c4d,"Now"); printf( "T: 405 Format %%u %%x %%X Expect: 1234 fedcba09 ABCD0123\n"); printf( "T: %d Result : %u %x %X\n",n++,1234, \ 0xFEDCBA09,0xabcd0123); /* * Compare conversion results with Harbison & Steele "C A Reference Manual" * Chap 15 pp 373-377 */ n = 500; printf( "Harbison & Steele Table 15-8 Examples of the d conversion\n"); printf( "T: 500 %%12d Expect: 45 -45\n"); printf( "T: %d Result : %12d %12d\n",n++,45,-45); printf( "T: 501 %%012d Expect: 000000000045 -00000000045\n"); printf( "T: %d Result : %012d %012d\n",n++,45,-45); printf( "T: 502 %% 012d Expect: 00000000045 -00000000045\n"); printf( "T: %d Result : % 012d % 012d\n",n++,45,-45); printf( "T: 503 %%+12d Expect: +45 -45\n"); printf( "T: %d Result : %+12d %+12d\n",n++,45,-45); printf( "T: 504 %%+012d Expect: +00000000045 -00000000045\n"); printf( "T: %d Result : %+012d %+012d\n",n++,45,-45); printf( "T: 505 %%-12d Expect: 45 -45 \n"); printf( "T: %d Result : %-12d %-12d\n",n++,45,-45); printf( "T: 506 %%- 12d Expect: 45 -45 \n"); printf( "T: %d Result : %- 12d %- 12d\n",n++,45,-45); printf( "T: 507 %%-+12d Expect: +45 -45 \n"); printf( "T: %d Result : %-+12d %-+12d\n",n++,45,-45); printf( "T: 508 %%12.4d Expect: 0045 -0045\n"); printf( "T: %d Result : %12.4d %12.4d\n",n++,45,-45); printf( "T: 509 %%-12.4d Expect: 0045 -0045 \n"); printf( "T: %d Result : %-12.4d %-12.4d\n",n++,45,-45); n =650; printf( "Harbison & Steele Table 15-9 Examples of the u conversion\n"); printf( "T: 650 %%14u Expect: 45 4294967251\n"); printf( "T: %d Result : %14u %14u\n",n++,45,-45); printf( "T: 651 %%014u Expect: 00000000000045 00004294967251\n"); printf( "T: %d Result : %014u %014u\n",n++,45,-45); printf( "T: 652 %%#14u Expect: 45 4294967251\n"); printf( "T: %d Result : %#14u %#14u\n",n++,45,-45); printf( "T: 653 %%#014u Expect: 00000000000045 00004294967251\n"); printf( "T: %d Result : %#014u %#014u\n",n++,45,-45); printf( "T: 654 %%-14u Expect: 45 4294967251 \n"); printf( "T: %d Result : %-14u %-14u\n",n++,45,-45); printf( "T: 655 %%-#14u Expect: 45 4294967251 \n"); printf( "T: %d Result : %-#14u %-#14u\n",n++,45,-45); printf( "T: 656 %%14.4u Expect: 0045 4294967251\n"); printf( "T: %d Result : %14.4u %14.4u\n",n++,45,-45); printf( "T: 657 %%-14.4u Expect: 0045 4294967251 \n"); printf( "T: %d Result : %-14.4u %-14.4u\n",n++,45,-45); n = 700; printf( "Harbison & Steele Table 15-10 Examples of the o conversion\n"); printf( "T: 700 %%14o Expect: 55 37777777723\n"); printf( "T: %d Result : %14o %14o\n",n++,45,-45); printf( "T: 701 %%014o Expect: 00000000000055 00037777777723\n"); printf( "T: %d Result : %014o %014o\n",n++,45,-45); printf( "T: 702 %%#14o Expect: 055 037777777723\n"); printf( "T: %d Result : %#14o %#14o\n",n++,45,-45); printf( "T: 703 %%#014o Expect: 00000000000055 00037777777723\n"); printf( "T: %d Result : %#014o %#014o\n",n++,45,-45); printf( "T: 704 %%-14o Expect: 55 37777777723 \n"); printf( "T: %d Result : %-14o %-14o\n",n++,45,-45); printf( "T: 705 %%-#14o Expect: 055 037777777723 \n"); printf( "T: %d Result : %-#14o %-#14o\n",n++,45,-45); printf( "T: 706 %%14.4o Expect: 0055 37777777723\n"); printf( "T: %d Result : %14.4o %14.4o\n",n++,45,-45); printf( "T: 707 %%-#14.4o Expect: 00055 037777777723 \n"); printf( "T: %d Result : %-#14.4o %-#14.4o\n",n++,45,-45); n = 800; printf( "Harbison & Steele Table 15-11 Examples of x and X conversion\n"); printf( " (assuming that the format %%-#12.4x generates a prefix to -45)\n"); printf( "T: 800 %%12x Expect: 2d ffffffd3\n"); printf( "T: %d Result : %12x %12x\n",n++,45,-45); printf( "T: 801 %%012x Expect: 00000000002d 0000ffffffd3\n"); printf( "T: %d Result : %012x %012x\n",n++,45,-45); printf( "T: 802 %%#12X Expect: 0X2D 0XFFFFFFD3\n"); printf( "T: %d Result : %#12X %#12X\n",n++,45,-45); printf( "T: 803 %%#012X Expect: 0X000000002D 0X00FFFFFFD3\n"); printf( "T: %d Result : %#012X %#012X\n",n++,45,-45); printf( "T: 804 %%-12x Expect: 2d ffffffd3 \n"); printf( "T: %d Result : %-12x %-12x\n",n++,45,-45); printf( "T: 805 %%-#12x Expect: 0x2d 0xffffffd3 \n"); printf( "T: %d Result : %-#12x %-#12x\n",n++,45,-45); printf( "T: 806 %%12.4x Expect: 002d ffffffd3\n"); printf( "T: %d Result : %12.4x %12.4x\n",n++,45,-45); printf( "T: 807 %%-#12.4x Expect: 0x002d 0xffffffd3 \n"); printf( "T: %d Result : %-#12.4x %-#12.4x\n",n++,45,-45); n = 850; printf( "Harbison & Steele Table 15-16 Examples of the f conversion\n"); printf( " (assuming that the format is %%12f and not %%10f as shown)\n"); printf( "T: 850 %%12.2f Expect: 12.68 -12.68\n"); printf( "T: %d Result : %12.2f %12.2f\n",n++,12.678,-12.678); printf( "T: 851 %%012.2f Expect: 000000012.68 -00000012.68\n"); printf( "T: %d Result : %012.2f %012.2f\n",n++,12.678,-12.678); printf( "T: 852 %% 012.2f Expect: 00000012.68 -00000012.68\n"); printf( "T: %d Result : % 012.2f % 012.2f\n",n++,12.678,-12.678); printf( "T: 853 %%+12.2f Expect: +12.68 -12.68\n"); printf( "T: %d Result : %+12.2f %+12.2f\n",n++,12.678,-12.678); printf( "T: 854 %%+012.2f Expect: +00000012.68 -00000012.68\n"); printf( "T: %d Result : %+012.2f %+012.2f\n",n++,12.678,-12.678); printf( "T: 855 %%-12.2f Expect: 12.68 -12.68 \n"); printf( "T: %d Result : %-12.2f %-12.2f\n",n++,12.678,-12.678); printf( "T: 856 %%- 12.2f Expect: 12.68 -12.68 \n"); printf( "T: %d Result : %- 12.2f %- 12.2f\n",n++,12.678,-12.678); printf( "T: 857 %%-+12.4f Expect: +12.6780 -12.6780 \n"); printf( "T: %d Result : %-+12.4f %-+12.4f\n",n++,12.678,-12.678); n = 900; printf( "Harbison & Steele Table 15-17 Examples of e and E conversion\n"); printf( " (assuming that the format is %%12e and not %%10e as shown)\n"); printf( "T: 900 %%12.2e Expect: 1.27e+01 -1.27e+01\n"); printf( "T: %d Result : %12.2e %12.2e\n",n++,12.678,-12.678); printf( "T: 901 %%012.2e Expect: 00001.27e+01 -0001.27e+01\n"); printf( "T: %d Result : %012.2e %012.2e\n",n++,12.678,-12.678); printf( "T: 902 %% 012.2e Expect: 0001.27e+01 -0001.27e+01\n"); printf( "T: %d Result : % 012.2e % 012.2e\n",n++,12.678,-12.678); printf( "T: 903 %%+12.2E Expect: +1.27E+01 -1.27E+01\n"); printf( "T: %d Result : %+12.2E %+12.2E\n",n++,12.678,-12.678); printf( "T: 904 %%+012.2E Expect: +0001.27e+01 -0001.27e+01\n"); printf( "T: %d Result : %+012.2E %+012.2E\n",n++,12.678,-12.678); printf( "T: 905 %%-12.2e Expect: 1.27e+01 -1.27e+01 \n"); printf( "T: %d Result : %-12.2e %-12.2e\n",n++,12.678,-12.678); printf( "T: 906 %%- 12.2e Expect: 1.27e+01 -1.27e+01 \n"); printf( "T: %d Result : %- 12.2e %- 12.2e\n",n++,12.678,-12.678); printf( "T: 907 %%-+12.2e Expect: +1.27e+01 -1.27e+01 \n"); printf( "T: %d Result : %-+12.2e %-+12.2e\n",n++,12.678,-12.678); n = 950; printf( "Harbison & Steele Table 15-15 Examples of the s conversion\n"); printf( "T: 950 %%12s Expect: zap longish\n"); printf( "T: %d Result : %12s %12s\n",n++,"zap","longish"); printf( "T: 951 %%12.5s Expect: zap longi\n"); printf( "T: %d Result : %12.5s %12.5s\n",n++,"zap","longish"); printf( "T: 952 %%012s Expect: 000000000zap 00000longish\n"); printf( "T: %d Result : %012s %012s\n",n++,"zap","longish"); printf( "T: 953 %%-12s Expect: zap longish \n"); printf( "T: %d Result : %-12s %-12s\n",n++,"zap","longish"); n = 970; printf( "Harbison & Steele Table 15-13 Examples of the c conversion\n"); printf( "T: 970 %%12c Expect: *\n"); printf( "T: %d Result : %12c\n",n++,'*'); printf( "T: 971 %%012c Expect: 00000000000*\n"); printf( "T: %d Result : %012c\n",n++,'*'); printf( "T: 972 %%-12c Expect: * \n"); printf( "T: %d Result : %-12c\n",n++,'*'); return 0; }