我正在使用printf将一些字符串写入gstring,如下所示:
char *string<i>
/*where string<i> stands for string1, string2
and so on*/
g_string_append_printf (ustring, "@%s{%s,\n",string1, string0);
if( strlen(string2)!=0 ||string2!=NULL)
g_string_append_printf (ustring,"\tAuthor=\"%s\",\n", string2);
if( strlen(string3)!=0 ||string3!=NULL)
g_string_append_printf (ustring,"\tYear=\"%s\",\n", string3);
if( strlen(string4)!=0 ||string4!=NULL)
g_string_append_printf (ustring, "\tTitle=\"%s\",\n", string4);胶质瘤在这里可能不太重要。把它当作
printf ("\tAuthor=\"%s\",\n", string<i>)当这很好的时候,它似乎不是最好的方法(我有字符串string<1>到string<30>),我正在寻找更好的方法。
需要考虑的要点
有什么更好的方法来实现这一点吗?
发布于 2013-05-03 13:24:44
通过在函数中包装字符串,消除检查字符串是否为NULL或空的复制:
void conditionally_append_string(char* out, const char* fmt, const char* in)
{
/* Check for NULL before dereferencing.
Just check if first character is NOT null terminator
instead of invoking strlen(). */
if (in && *in)
{
g_string_append_printf (out, fmt, in);
}
}
conditionally_append_string(ustring, "@%s{\n", string0);
conditionally_append_string(ustring, "%s,\n", string1);
conditionally_append_string(ustring, "\tAuthor=\"%s\",\n", string2);https://stackoverflow.com/questions/16359936
复制相似问题