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);
}
好吧,本意是要拆分开然后再组在一起,却写的莫名其妙的,应该用循环也没用,就改了下。这下可以显示全了。
测试的代码为:
#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);
}