如何使用strdup格式说明符? 我正在尝试这样做。
char arr[10] = "acbde";
char* s = strdup("Hello..I am %s", arr);
但这不起作用。
答案 0 :(得分:5)
您无法使用此功能strdup
。相反,您应该使用snprintf
。以下是您应该如何做的基本示例。
char *arr = "acbde";
char str[100]; // set this to your maximum length
snprintf(str, sizeof(str), "Hello..I am %s", arr);
以下是有关如何使用它的更完整示例。
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(void) {
char *arr = "acbde";
char *str;
int length = snprintf(NULL, 0, "Hello..I am %s", arr);
assert(length >= 0); // TODO add proper error handling
str = malloc(sizeof(char) * (length + 1));
snprintf(str, length+1, "Hello..I am %s", arr);
printf("%s [%d]\n", str, length);
free(str);
}
答案 1 :(得分:0)
尝试使用g_strdup_printf()
。
但应了解-使用此功能后必须释放内存。