Cこれで簡単にはなりません。私は全部を見て、何も見つけませんでした。文字列の部分文字列をcで検索してから新しい文字列を作成します
"Sample:"で始まる部分文字列をC文字列で検索し、その後に最初の改行までのすべての文字で構成される新しいc文字列を作成する必要があります。
C++では、これをハートビートで行うことができました。経験豊富なCプログラマが私に方法を教えてくれますか?
私はこれを手書きで行うことができると確信していますが、確かにいくつかの組み込み関数が役立ちますか?
Cこれで簡単にはなりません。私は全部を見て、何も見つけませんでした。文字列の部分文字列をcで検索してから新しい文字列を作成します
"Sample:"で始まる部分文字列をC文字列で検索し、その後に最初の改行までのすべての文字で構成される新しいc文字列を作成する必要があります。
C++では、これをハートビートで行うことができました。経験豊富なCプログラマが私に方法を教えてくれますか?
私はこれを手書きで行うことができると確信していますが、確かにいくつかの組み込み関数が役立ちますか?
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呼び出しを知っていればそれはあまりにも難しいことではありません。
私はあなたがchar *を引くことができるとは思わなかった。それは素晴らしいです。それが私が探していたものです。ありがとうございました。 – Aerovistae
@Aerovistaeは、文字列が連続したメモリブロックとしてメモリに格納される方法と関係しています。したがって、もし私がメモリのインデックスを指すポインタを持っていれば、そのポインタとメモリブロックの先頭の違いは部分文字列の長さです。 –
はい、理にかなっています。再度、感謝します。 – Aerovistae
strstr()とstrchr()の参照BTW:stdライブラリの関数を徹底的に調べることをお勧めします。多くの機能はありませんが、必要なときにその名前を思い出すかもしれません。 – wildplasser
なぜ私は-1を得ましたか?好奇心から...私に正当な質問のように思われる – Aerovistae
おそらくあなたが不平を言うと努力を示していないためです。 – wildplasser