区切り文字に応じて文字列を分割すると思われるこのコードがあります。区切り文字が '\0' (ヌル文字) の場合は機能するようですが、'\n' (改行) で機能させようとすると、説明できない奇妙な結果になります。コードは次のとおりです。
char **results = malloc(*nb_delimiter * sizeof(char *));
// Separate result with delimiter
char *next;
char *pointer = "1\n2\n3\n4";
for (int i = 0; i < *nb_delimiter; ++i)
{
next = strchr(pointer, delimiter);
results[i] = pointer;
pointer = next + 1;
}
printf("%s\n", results[0]);
例:実行すると、次のようになります。
- 結果[0] : 1\n2\n3\n4
- 結果[1]: 2\n3\n4
- 結果[2]: 3\n4
- 結果[3]: 4
それ以外の:
- 結果[0]: 1
- 結果[1]: 2
- 結果[2]: 3
- 結果[3]: 4
C で配列を分割する方法を検索すると、大多数が strchr() を推奨します。なぜこの問題があるのか わかりません。
ありがとう