0

区切り文字に応じて文字列を分割すると思われるこのコードがあります。区切り文字が '\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() を推奨します。なぜこの問題があるのか​​ わかりません。

ありがとう

4

1 に答える 1