获取 char * 的子字符串

比如,我有这个

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

想要得到 "test"。我怎样才能做到呢?

703239 次浏览

您可以使用 strstr.Example 代码 给你

请注意,返回的结果不以空结束。

假设你知道子串的位置和长度:

char *buff = "this is a test string";
printf("%.*s", 4, buff + 10);

您可以通过将子字符串复制到另一个内存目的地来实现同样的功能,但是这是不合理的,因为您已经在内存中拥有它了。

这是使用指针避免不必要复制的一个很好的例子。

char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';

任务完成:)

您可以只使用 <string.h>中的 strstr()

$man strstr

使用 <cstring>中的 char* strncpy(char* dest, char* src, int n)。在您的情况下,您需要使用以下代码:

char* substr = malloc(4);
strncpy(substr, buff+10, 4);

关于 strncpy函数 给你的完整文档。