Поиск подстроки строки в c, затем создание из нее новой строки

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

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

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

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

1 ответ

Решение

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.

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