获取char的子字符串*

时间:2010-11-18 11:37:08

标签: c char substring

例如,我有这个

char *buff = "this is a test string";

并希望得到"test"。我怎么能这样做?

5 个答案:

答案 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)

您可以使用strstr()

中的<string.h>

$ man strstr