我有这段代码假设根据分隔符拆分字符串。当分隔符为 '\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()。我不明白为什么我有这个问题。
谢谢