Bra*_*son 11 c string printf concatenation
我正在我的程序中逐个构建一个字符串,当我在末尾添加一个简单的字符串时,我正在混合使用strcat(),但是当我添加一个格式化的字符串时,我正在使用sprintf(),例如:
int one = 1;
sprintf(instruction + strlen(instruction), " number %d", one);
Run Code Online (Sandbox Code Playgroud)
是否可以使用strcat()连接格式化的字符串或者首选方法是什么?
Mat*_*son 15
您的解决方案将有效.调用strlen有点尴尬(特别是如果字符串变得很长).sprintf()将返回你使用的长度[strcat不会],所以你能做的一件事是这样的:
char str[MAX_SIZE];
char *target = str;
target += sprintf(target, "%s", str_value);
target += sprintf(target, "somestuff %d", number);
if (something)
{
target += sprintf(target, "%s", str_value2);
}
else
{
target += sprintf(target, "%08x", num2);
}
Run Code Online (Sandbox Code Playgroud)
我不确定strcat是否比sprintf()以这种方式使用时效率更高.
编辑:应该写更小的例子......
不,这是不可能的,但你可以使用sprintf()这些简单的字符串,并避免strlen()每次调用:
len = 0;
len += sprintf(buf+len, "%s", str);
len += sprintf(buf+len, " number %d", one);
Run Code Online (Sandbox Code Playgroud)