c-提取字符串中的数据范围



假设我有:

char string[100] = "HelloMyNameIsBob";

我想提取字符串的"MyName"部分并将其存储在某个地方。

我试过这样做:

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

但我只是打印出"M"这个字符。

有人有想法吗?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新