Поиск подстроки строки в 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.