获取 char* 的子字符串[重复]

问题描述 投票:0回答:5

比如我有这个

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

并且想要得到

"test"
。我怎样才能做到这一点?

c char substring
5个回答
260
投票
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';

工作完成:)


110
投票

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

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

您可以通过将子字符串复制到另一个内存目的地来实现相同的目的,但这是不合理的,因为您已经将其存在于内存中。

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


72
投票

使用

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

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

有关

strncpy
函数的完整文档此处


7
投票

您可以使用

strstr
。示例代码这里.

请注意,返回的结果不是以 null 结尾的。


6
投票

您可以只使用

strstr()
 中的 
<string.h>

$ 男人strstr

© www.soinside.com 2019 - 2024. All rights reserved.