#include #include #include void test(char *fmt, ...) { va_list arg; char fmtbuf[100], stdbuf[100]; va_start(arg, fmt); vsnprint(fmtbuf, sizeof fmtbuf, fmt, arg); va_end(arg); va_start(arg, fmt); vsnprint(stdbuf, sizeof stdbuf, fmt, arg); va_end(arg); if(strcmp(fmtbuf, stdbuf) != 0) print("fmt %s: fmt=\"%s\" std=\"%s\"\n", fmt, fmtbuf, stdbuf); print("fmt %s: %s\n", fmt, fmtbuf); } int main(int argc, char *argv[]) { test("%f", 3.14159); test("%f", 3.14159e10); test("%f", 3.14159e-10); test("%e", 3.14159); test("%e", 3.14159e10); test("%e", 3.14159e-10); test("%g", 3.14159); test("%g", 3.14159e10); test("%g", 3.14159e-10); test("%g", 2e25); test("%.18g", 2e25); test("%2.18g", 1.0); test("%2.18f", 1.0); test("%f", 3.1415927/4); test("%20.10d", 12345); test("%0.10d", 12345); return 0; }