例如,我有这个
char *buff = "this is a test string";
并希望得到"test"
。我怎么能这样做?
答案 0 :(得分:198)
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';
完成工作:)
答案 1 :(得分:80)
假设你知道子串的位置和长度:
char *buff = "this is a test string";
printf("%.*s", 4, buff + 10);
你可以通过将子字符串复制到另一个内存目的地来实现同样的目的,但这是不合理的,因为你已经将它存在于内存中。
这是通过使用指针避免不必要的复制的一个很好的例子。
答案 2 :(得分:61)
使用char* strncpy(char* dest, char* src, int n)
中的<cstring>
。在您的情况下,您将需要使用以下代码:
char* substr = malloc(4);
strncpy(substr, buff+10, 4);
strncpy
函数here的完整文档。
答案 3 :(得分:9)
您可以使用strstr
。示例代码here
请注意,返回的结果不会以空值终止。
答案 4 :(得分:7)