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

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

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

и хочу получить "test". Как я могу это сделать?

вопрос задан 18.11.2010
does_not_exist
репутация

5 ответов


  • 183 рейтинг
    char subbuff[5];
    memcpy( subbuff, &buff[10], 4 );
    subbuff[4] = '\0';
    

    Работа сделана :)

    ответ дан Goz, с репутацией 49697, 18.11.2010
  • 75 рейтинг

    Предполагая, что вы знаете положение и длину подстроки:

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

    Этого же можно добиться, скопировав подстроку в другое место в памяти, но это нецелесообразно, поскольку она уже есть в памяти.

    Это хороший пример того, как избежать ненужного копирования с помощью указателей.

    ответ дан Blagovest Buyukliev, с репутацией 34166, 18.11.2010
  • 57 рейтинг

    Используйте char* strncpy(char* dest, char* src, int n) из . В вашем случае вам нужно будет использовать следующий код:

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

    Полная документация по функции strncpy здесь .

    ответ дан Mihai Scurtu, с репутацией 1143, 18.11.2010
  • 9 рейтинг

    Вы можете использовать strstr. Пример кода здесь

    Обратите внимание, что возвращаемый результат не завершается нулем.

    ответ дан Milan, с репутацией 9289, 18.11.2010
  • 7 рейтинг

    Вы можете просто использовать strstr() из

    $ человек strstr

    ответ дан Paul R, с репутацией 172687, 18.11.2010