假设我有:
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
——请检查。您还需要传递字符串的指针,而不是字符值。