1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | if ( strstr (format, "%(jieri)" ) != NULL) { gchar bufs[128]; gchar *tmp; tmp = lunar_date_get_jieri(date, " " ); if (*tmp) { g_utf8_strncpy(bufs, tmp, g_utf8_strlen(tmp, 128)); } /*if (strstr(tmp, " " ) != NULL) { char** buf = g_strsplit(tmp, " ", -1); if (g_utf8_validate(*buf, -1, NULL)) g_utf8_strncpy(bufs, *buf, 3); else { strncpy(bufs, *buf, 4); bufs[4]= '\0'; } g_strfreev(buf); } else { if (g_utf8_validate(tmp, -1, NULL)) g_utf8_strncpy(bufs, tmp, 3); else { strncpy(bufs, tmp, 4); bufs[4]= '\0'; } }*/ g_free(tmp); str = g_string_replace(str, "%(jieri)" , bufs, -1); } |
好吧,本意是要拆分开然后再组在一起,却写的莫名其妙的,应该用循环也没用,就改了下。这下可以显示全了。
测试的代码为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <lunar/lunar.h> #include <stdio.h> #include <stdlib.h> int main( int argc, char *argv[]) { //g_type_init(); 这句我扔到lunar_init函数里面去了。 lunar_init(&argc, &argv); LunarDate *lunar_date = lunar_date_new(); lunar_date_set_solar_date(lunar_date, 2011, 10, 28, 1, NULL); gchar *str = lunar_date_strftime(lunar_date, "%(NIAN)年%(YUE)月%(RI)日%(SHI)时 生肖:%(shengxiao) 节日:%(jieri)" ); printf ( "out str:%s" , str); lunar_date_free(lunar_date); exit (0); } |