поиск подстроки строки в c, затем создание из нее новой строки - PullRequest
0 голосов
/ 15 марта 2012

C не делает это легким.Я просмотрел все, ничего не нашел.

Мне нужно найти в строке C подстроку, начинающуюся с «Sample:», а затем создать новую строку c, состоящую из всех символов после этого до первой новой строки.

В C ++ я мог бы сделать это в одно мгновение.Может ли более опытный программист на C показать мне путь?

Я уверен, что смогу сделать это, написав это от руки, но наверняка есть НЕКОТОРЫЕ встроенные функции, которые помогают?

1 Ответ

3 голосов
/ 15 марта 2012

strstr() и strndup() ваши друзья, просто не забудьте освободить вывод, когда закончите:

const char *input = "Hello Sample: This is a test\nTest";

const char *start = strstr(input, "Sample: ");

if (!start)
{
    // report error here
}

const char *end = strstr(start, "\n");
if (!end)
{
    // you have two options here. 
    // #1: use pure strdup on start and you have your output
    // #2: make this an error, and report it to the user.
}


int length = end - start;

char *output = strndup(start, length);

printf("%s", output); // Prints "Sample: This is a test"

free(output);

Это не слишком сложно, если вы знаете правильные вызовы API.

...