Ответ 1
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';
Задание выполнено:)
Например, у меня есть это
char *buff = "this is a test string";
и хотите получить "test"
. Как я могу это сделать?
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>