Получить подстроку символа *
Например, у меня есть это
char *buff = "this is a test string";
и хочу получить "test"
, Как я могу это сделать?
5 ответов
Решение
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';
Работа выполнена:)
Предполагая, что вы знаете положение и длину подстроки:
char *buff = "this is a test string";
printf("%.*s", 4, buff + 10);
Вы можете достичь того же, скопировав подстроку в другое место назначения памяти, но это нецелесообразно, так как она уже есть в памяти.
Это хороший пример того, как избежать ненужного копирования с помощью указателей.
Использование char* strncpy(char* dest, char* src, int n)
от <cstring>
, В вашем случае вам нужно будет использовать следующий код:
char* substr = malloc(4);
strncpy(substr, buff+10, 4);
Полная документация по strncpy
функционировать здесь.
Ты можешь использовать strstr
, Пример кода здесь
Обратите внимание, что возвращаемый результат не завершается нулем.
Вы можете просто использовать strstr()
от <string.h>