home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / i18nv104.zip / SAMPLE / VPRINTF / VPRINTF.C < prev    next >
C/C++ Source or Header  |  1996-02-13  |  5KB  |  148 lines

  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. #include <locale.h>
  4. #include <wchar.h>
  5.  
  6. int myprint(const char *format, ...);
  7.  
  8. #define PRINT_RESULT(PRINT_STATEMNT) { \
  9.   myprint("Output:\n"); \
  10.   myprint("Return Code: %d\n\n", (PRINT_STATEMNT)); \
  11. }
  12.  
  13. main()
  14. {
  15.   short sn;
  16.   int n;
  17.  
  18.   setlocale(LC_ALL, "");
  19.  
  20.   myprint("%s\n",
  21.     "myprint(\"%4d%4i%4o%4u%4x%4X\\n\", 123, 123, 123, 123, 123, 123);");
  22.   PRINT_RESULT(myprint("%4d%4i%4o%4u%4x%4X\n", 123, 123, 123, 123, 123, 123));
  23.  
  24.   myprint("%s\n",
  25.     "myprint(\"%.1d %.3d %01d %03d %.1x %.3x %01x %03x\\n\", \n"
  26.     "       12, 12, 12, 12, 12, 12, 12, 12);");
  27.   PRINT_RESULT(myprint("%.1d %.3d %01d %03d %.1x %.3x %01x %03x\n", \ 
  28.     12, 12, 12, 12, 12, 12, 12, 12));
  29.  
  30.   myprint("%s\n",
  31.     "myprint(\"%d %o %x %X %u %i %p\\n\", \n"
  32.     "       -12345, -12345, -12345, -12345, -12345, -12345, -12345);");
  33.   PRINT_RESULT(myprint("%d %o %x %X %u %i %p\n", \
  34.     -12345, -12345, -12345, -12345, -12345, -12345, -12345));
  35.  
  36.   myprint("%s\n",
  37.     "myprint(\"%\\\'d %\\\'o %\\\'x %\\\'X %\\\'u %\\\'i %\\\'p\\n\", \n"
  38.     "       -12345, -12345, -12345, -12345, -12345, -12345, -12345);");
  39.   PRINT_RESULT(myprint("%\'d %\'o %\'x %\'X %\'u %\'i %\'p\n", \
  40.     -12345, -12345, -12345, -12345, -12345, -12345, -12345));
  41.  
  42.   myprint("%s\n",
  43.     "myprint(\"%#d %#o %#x %#X %#u %#i %#p\\n\", \n"
  44.     "       -12345, -12345, -12345, -12345, -12345, -12345, -12345);");
  45.   PRINT_RESULT(myprint("%#d %#o %#x %#X %#u %#i %#p\n", \
  46.     -12345, -12345, -12345, -12345, -12345, -12345, -12345));
  47.  
  48.   myprint("%s\n",
  49.     "myprint(\"abc %s ghi %s mno\\n\", \"def\", \"jkl\");");
  50.   PRINT_RESULT(myprint("abc %s ghi %s mno\n", "def", "jkl"));
  51.  
  52.   myprint("%s\n",
  53.     "myprint(\"abc %2$s ghi %1$s mno\\n\", \"jkl\", \"def\");");
  54.   PRINT_RESULT(myprint("abc %2$s ghi %1$s mno\n", "jkl", "def"));
  55.  
  56.   myprint("%s\n",
  57.     "myprint(\"abc %4$*3$.*2$s ghi %1$s mno\\n\", \"jkl\", 5, 5, \"def\");");
  58.   PRINT_RESULT(myprint("abc %4$*3$.*2$s ghi %1$s mno\n", "jkl", 5, 5, "def"));
  59.  
  60.   myprint("%s\n",
  61.     "myprint(\"abc %4$*3$.*2$S ghi %1$S mno\\n\", L\"jkl\", 5, 5, L\"def\");");
  62.   PRINT_RESULT(myprint("abc %4$*3$.*2$S ghi %1$S mno\n", L"jkl", 5, 5, L"def"));
  63.  
  64.   myprint("%s\n",
  65.     "myprint(\"%s %5s %5.2s %2.5s\\n\", \n"
  66.     "       \"abc\", \"abc\", \"abc\", \"abc\");");
  67.   PRINT_RESULT(myprint("%s %5s %5.2s %2.5s\n", \
  68.     "abc", "abc", "abc", "abc"));
  69.  
  70.   myprint("%s\n",
  71.     "myprint(\"%S %5S %5.2S %2.5S\\n\", \n"
  72.     "       L\"abc\", L\"abc\", L\"abc\", L\"abc\");");
  73.   PRINT_RESULT(myprint("%S %5S %5.2S %2.5S\n", \
  74.     L"abc", L"abc", L"abc", L"abc"));
  75.  
  76.   myprint("%s\n",
  77.     "myprint(\"%*.*f\\n\", 8, 2, 12.345);");
  78.   PRINT_RESULT(myprint("%*.*f\n", 8, 2, 12.345));
  79.  
  80.   myprint("%s\n",
  81.     "myprint(\"%2$*3$d %1$4s\\n\", \"foo\", 345, 5);");
  82.   PRINT_RESULT(myprint("%2$*3$d %1$4s\n", "foo", 345, 5));
  83.  
  84.   myprint("%s\n",
  85.     "myprint(\"%2$3.3d abc %1$2.-3d def %3$4.d ghi\\n\", 1, 2, 3);");
  86.   PRINT_RESULT(myprint("%2$3.3d abc %1$2.-3d def %3$4.d ghi\n", 1, 2, 3));
  87.  
  88.   myprint("%s\n",
  89.     "myprint(\"%1$*3$.*4$d %2$s\\n\", 3, \"foo\", 5, 6);");
  90.   PRINT_RESULT(myprint("%1$*3$.*4$d %2$s\n", 3, "foo", 5, 6));
  91.  
  92.   myprint("%s\n",
  93.     "myprint(\"%c %C %hn %% %c %C %n\\n\", \n"
  94.     "       \'a\', L\'a\', &sn, \'b\', L\'b\', &n);");
  95.   PRINT_RESULT(myprint("%c %C %hn %% %c %C %n\n", \
  96.     'a', L'a', &sn, 'b', L'b', &n));
  97.   myprint("Value of sn is: %hd \n", sn);
  98.   myprint("Value of n is: %d \n\n", n);
  99.  
  100.   myprint("%s\n",
  101.     "myprint(\"%e %E %f %g %G\\n\", 2.3, 2.3, 2.3, 2.3, 2.3);");
  102.   PRINT_RESULT(myprint("%e %E %f %g %G\n", 2.3, 2.3, 2.3, 2.3, 2.3));
  103.  
  104.   myprint("%s\n",
  105.     "myprint(\"%Le %LE %Lf %Lg %LG\\n\", \n"
  106.     "       (long double)2.3, (long double)2.3, (long double)2.3, \n"
  107.     "       (long double)2.3, (long double)2.3);");
  108.   PRINT_RESULT(myprint("%Le %LE %Lf %Lg %LG\n", \
  109.     (long double)2.3, (long double)2.3, (long double)2.3, \
  110.     (long double)2.3, (long double)2.3));
  111.  
  112.   myprint("%s\n",
  113.     "myprint(\"%.3e %.3E %.3f %.3g %.3G\\n\", \n"
  114.     "       2.34567, 2.34567, 2.34567, 2.34567, 2.34567);");
  115.   PRINT_RESULT(myprint("%.3e %.3E %.3f %.3g %.3G\n", \
  116.     2.34567, 2.34567, 2.34567, 2.34567, 2.34567));
  117.  
  118.   myprint("%s\n",
  119.     "myprint(\"%.3e %.3E %.3f %.3g %.3G\\n\", \n"
  120.     "       12345.67/3, 12345.67/3, 12345.67/3, 12345.67/3, 12345.67/3);");
  121.   PRINT_RESULT(myprint("%.3e %.3E %.3f %.3g %.3G\n", \
  122.     12345.67/3, 12345.67/3, 12345.67/3, 12345.67/3, 12345.67/3));
  123.  
  124.   myprint("%s\n",
  125.     "myprint(\"%.3e %.3E %.3f %.3g %.3G\\n\", \n"
  126.     "       -12345.67/3, -12345.67/3, -12345.67/3, -12345.67/3, -12345.67/3);");
  127.   PRINT_RESULT(myprint("%.3e %.3E %.3f %.3g %.3G\n", \
  128.     -12345.67/3, -12345.67/3, -12345.67/3, -12345.67/3, -12345.67/3));
  129.  
  130.   myprint("%s\n",
  131.     "myprint(\"%\\\'3e %\\\'3E %\\\'3f %\\\'3g %\\\'3G\\n\", \n"
  132.     "       -12345.67/3, -12345.67/3, -12345.67/3, -12345.67/3, -12345.67/3);");
  133.   PRINT_RESULT(myprint("%\'e %\'3E %\'3f %\'3g %\'3G\n", \
  134.     -12345.67/3, -12345.67/3, -12345.67/3, -12345.67/3, -12345.67/3));
  135. }
  136.  
  137. int myprint(const char *format, ...)
  138. {
  139.   va_list args;
  140.   int rc;
  141.  
  142.   va_start(args, format);
  143.   rc = vprintf(format, args);
  144.   va_end(args);
  145.   return (rc);
  146. }
  147.  
  148.