📄 printf.c
字号:
/* Unit tests for gstring * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This work is provided "as is"; redistribution and modification * in whole or in part, in any medium, physical or electronic is * permitted without restriction. * * This work is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * In no event shall the authors or contributors be liable for any * direct, indirect, incidental, special, exemplary, or consequential * damages (including, but not limited to, procurement of substitute * goods or services; loss of use, data, or profits; or business * interruption) however caused and on any theory of liability, whether * in contract, strict liability, or tort (including negligence or * otherwise) arising in any way out of the use of this software, even * if advised of the possibility of such damage. */#include <stdio.h>#include <string.h>#include "glib.h"static voidtest_retval_and_trunc (void){ gchar buf[128]; gint res; res = g_snprintf (buf, 0, "abc"); g_assert_cmpint (res, ==, 3); res = g_snprintf (NULL, 0, "abc"); g_assert_cmpint (res, ==, 3); res = g_snprintf (buf, 5, "abc"); g_assert_cmpint (res, ==, 3); res = g_snprintf (buf, 1, "abc"); g_assert_cmpint (res, ==, 3); g_assert (buf[0] == '\0'); g_assert_cmpstr (buf, ==, ""); res = g_snprintf (buf, 2, "abc"); g_assert_cmpint (res, ==, 3); g_assert (buf[1] == '\0'); g_assert_cmpstr (buf, ==, "a"); res = g_snprintf (buf, 3, "abc"); g_assert_cmpint (res, ==, 3); g_assert (buf[2] == '\0'); g_assert_cmpstr (buf, ==, "ab"); res = g_snprintf (buf, 4, "abc"); g_assert_cmpint (res, ==, 3); g_assert (buf[3] == '\0'); g_assert_cmpstr (buf, ==, "abc"); res = g_snprintf (buf, 5, "abc"); g_assert_cmpint (res, ==, 3); g_assert (buf[3] == '\0'); g_assert_cmpstr (buf, ==, "abc");}static voidtest_d (void){ gchar buf[128]; gint res; /* %d basic formatting */ res = g_snprintf (buf, 128, "%d", 5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%d", 0); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "0"); res = g_snprintf (buf, 128, "%.0d", 0); g_assert_cmpint (res, ==, 0); g_assert_cmpstr (buf, ==, ""); res = g_snprintf (buf, 128, "%.0d", 1); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "1"); res = g_snprintf (buf, 128, "%.d", 2); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "2"); res = g_snprintf (buf, 128, "%d", -1); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "-1"); res = g_snprintf (buf, 128, "%.3d", 5); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "005"); res = g_snprintf (buf, 128, "%.3d", -5); g_assert_cmpint (res, ==, 4); g_assert_cmpstr (buf, ==, "-005"); res = g_snprintf (buf, 128, "%5.3d", 5); g_assert_cmpint (res, ==, 5); g_assert_cmpstr (buf, ==, " 005"); res = g_snprintf (buf, 128, "%-5.3d", -5); g_assert_cmpint (res, ==, 5); g_assert_cmpstr (buf, ==, "-005 "); /* %d, length modifiers */ res = g_snprintf (buf, 128, "%" G_GINT16_FORMAT, (gint16)-5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "-5"); res = g_snprintf (buf, 128, "%" G_GUINT16_FORMAT, (guint16)5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%" G_GINT32_FORMAT, (gint32)-5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "-5"); res = g_snprintf (buf, 128, "%" G_GUINT32_FORMAT, (guint32)5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%" G_GINT64_FORMAT, (gint64)-5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "-5"); res = g_snprintf (buf, 128, "%" G_GUINT64_FORMAT, (guint64)5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%" G_GSSIZE_FORMAT, (gssize)-5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "-5"); res = g_snprintf (buf, 128, "%" G_GSIZE_FORMAT, (gsize)5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); /* %d, flags */ res = g_snprintf (buf, 128, "%-d", 5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%-+d", 5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "+5"); res = g_snprintf (buf, 128, "%+-d", 5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "+5"); res = g_snprintf (buf, 128, "%+d", -5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "-5"); res = g_snprintf (buf, 128, "% d", 5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, " 5"); res = g_snprintf (buf, 128, "% .0d", 0); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, " "); res = g_snprintf (buf, 128, "% +d", 5); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "+5"); res = g_snprintf (buf, 128, "%03d", 5); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "005"); res = g_snprintf (buf, 128, "%-03d", -5); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "-5 "); res = g_snprintf (buf, 128, "%03d", -5); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "-05");}static voidtest_o (void){ gchar buf[128]; gint res; /* %o basic formatting */ res = g_snprintf (buf, 128, "%o", 5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%o", 8); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "10"); res = g_snprintf (buf, 128, "%o", 0); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "0"); res = g_snprintf (buf, 128, "%.0o", 0); g_assert_cmpint (res, ==, 0); g_assert_cmpstr (buf, ==, ""); res = g_snprintf (buf, 128, "%.0o", 1); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "1"); res = g_snprintf (buf, 128, "%.3o", 5); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "005"); res = g_snprintf (buf, 128, "%.3o", 8); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "010"); res = g_snprintf (buf, 128, "%5.3o", 5); g_assert_cmpint (res, ==, 5); g_assert_cmpstr (buf, ==, " 005");}static voidtest_u (void){ gchar buf[128]; gint res; /* %u, basic formatting */ res = g_snprintf (buf, 128, "%u", 5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%u", 0); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "0"); res = g_snprintf (buf, 128, "%.0u", 0); g_assert_cmpint (res, ==, 0); g_assert_cmpstr (buf, ==, ""); res = g_snprintf (buf, 128, "%.0u", 1); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "1"); res = g_snprintf (buf, 128, "%.3u", 5); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "005"); res = g_snprintf (buf, 128, "%5.3u", 5); g_assert_cmpint (res, ==, 5); g_assert_cmpstr (buf, ==, " 005");}static voidtest_x (void){ gchar buf[128]; gint res; /* %x, basic formatting */ res = g_snprintf (buf, 128, "%x", 5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%x", 31); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "1f"); res = g_snprintf (buf, 128, "%x", 0); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "0"); res = g_snprintf (buf, 128, "%.0x", 0); g_assert_cmpint (res, ==, 0); g_assert_cmpstr (buf, ==, ""); res = g_snprintf (buf, 128, "%.0x", 1); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "1"); res = g_snprintf (buf, 128, "%.3x", 5); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "005"); res = g_snprintf (buf, 128, "%.3x", 31); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "01f"); res = g_snprintf (buf, 128, "%5.3x", 5); g_assert_cmpint (res, ==, 5); g_assert_cmpstr (buf, ==, " 005"); /* %x, flags */ res = g_snprintf (buf, 128, "%-x", 5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%03x", 5); g_assert_cmpint (res, ==, 3); g_assert_cmpstr (buf, ==, "005"); res = g_snprintf (buf, 128, "%#x", 31); g_assert_cmpint (res, ==, 4); g_assert_cmpstr (buf, ==, "0x1f"); res = g_snprintf (buf, 128, "%#x", 0); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "0");}static voidtest_X (void){ gchar buf[128]; gint res; /* %X, basic formatting */ res = g_snprintf (buf, 128, "%X", 5); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "5"); res = g_snprintf (buf, 128, "%X", 31); g_assert_cmpint (res, ==, 2); g_assert_cmpstr (buf, ==, "1F"); res = g_snprintf (buf, 128, "%X", 0); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "0"); res = g_snprintf (buf, 128, "%.0X", 0); g_assert_cmpint (res, ==, 0); g_assert_cmpstr (buf, ==, ""); res = g_snprintf (buf, 128, "%.0X", 1); g_assert_cmpint (res, ==, 1); g_assert_cmpstr (buf, ==, "1");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -