比如我有这个
char *buff = "this is a test string";
并且想要得到
"test"
。我怎样才能做到这一点?
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';
工作完成:)
假设你知道子串的位置和长度:
char *buff = "this is a test string";
printf("%.*s", 4, buff + 10);
您可以通过将子字符串复制到另一个内存目的地来实现相同的目的,但这是不合理的,因为您已经将其存在于内存中。
这是使用指针避免不必要复制的一个很好的例子。
使用
char* strncpy(char* dest, char* src, int n)
中的 <cstring>
。在您的情况下,您将需要使用以下代码:
char* substr = malloc(4);
strncpy(substr, buff+10, 4);
有关
strncpy
函数的完整文档此处。