假设我有:
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"。
有没有人有想法?
答案 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
- 请检查。您还需要传递字符串的指针,而不是字符值。