例如,我有这个
char *buff = "this is a test string";
Run Code Online (Sandbox Code Playgroud)
并希望得到"test".我怎样才能做到这一点?
Goz*_*Goz 206
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';
Run Code Online (Sandbox Code Playgroud)
任务完成 :)
Bla*_*iev 82
假设您知道子字符串的位置和长度:
char *buff = "this is a test string";
printf("%.*s", 4, buff + 10);
Run Code Online (Sandbox Code Playgroud)
您可以通过将子字符串复制到另一个内存目标来实现相同的功能,但由于您已将其存储在内存中,因此这是不合理的.
这是通过使用指针避免不必要的复制的一个很好的例子.
Mih*_*rtu 63
使用char* strncpy(char* dest, char* src, int n)从<cstring>.在您的情况下,您将需要使用以下代码:
char* substr = malloc(4);
strncpy(substr, buff+10, 4);
Run Code Online (Sandbox Code Playgroud)
在完整的文档strncpy的功能在这里.