【发布时间】:2010-09-21 08:01:15
【问题描述】:
char *strtok(char *s1, const char *s2)
对该函数的重复调用将字符串 s1 分解为“令牌”——即 字符串被分成子字符串, 每个都以 '\0' 结尾,其中 '\0' 替换任何字符 包含在字符串 s2 中。第一次通话 使用要标记为 s1 的字符串; 随后的调用使用 NULL 作为第一个 争论。指向开头的指针 当前令牌的返回;空值 如果没有更多则返回 令牌。
你好,
我刚才一直在尝试使用strtok,发现如果我将char* 传递给s1,则会出现分段错误。如果我传入char[],strtok 工作正常。
这是为什么?
我搜索了一下,原因似乎是char* 是只读的而char[] 是可写的。更详尽的解释将不胜感激。
【问题讨论】:
-
因此,在 char* 版本中,指针指向只读内存。在 char[] 版本中,数组变量在读写内存中,C 启动中的初始化代码将字符串字面量复制到数组中。