如何使用strdup格式说明符?

时间:2015-10-23 15:41:02

标签: c

如何使用strdup格式说明符? 我正在尝试这样做。

char arr[10] = "acbde";
char* s = strdup("Hello..I am %s", arr);

但这不起作用。

2 个答案:

答案 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()。 但应了解-使用此功能后必须释放内存。