提取字符串中的一系列数据

时间:2014-10-24 02:28:44

标签: c memory malloc memory-address

假设我有:

char string[100] = "HelloMyNameIsBob";

我要提取" MyName"字符串的一部分并将其存储在某处。

我试过这样做:

  char string[100] = "HelloMyNameIsBob";
  void *ptr = string;
  void *data_holder = malloc(6);
  memcpy(data_holder, string + 5, 6);
  printf("%c\n", *(char *)data_holder);

但我只是打印出角色" M"。

有没有人有想法?

2 个答案:

答案 0 :(得分:2)

char string[100] = "HelloMyNameIsBob";
char *data_holder = malloc(7); // include space for null terminator!
memcpy(data_holder, string + 5, 6);
data_holder[6] = '\0';
printf("%s\n", data_holder);
free(data_holder);

或者更简单,如果你真的只想打印而且实际上并不需要存储子字符串:

char string[100] = "HelloMyNameIsBob";
printf("%.6s\n", string + 5);

答案 1 :(得分:0)

首先,您使用%c代替%s - 请检查。您还需要传递字符串的指针,而不是字符值。