Получить подстроку символа *

Например, у меня есть это

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>

$ man strstr

Другие вопросы по тегам