-
#include<stdio.h>
-
#include<string.h>
-
-
int main(void)
-
{
-
char *str = "root:/bin:/bash";
-
......
-
strtok(str, ":");
-
}
出现段错误,原因是strtok会改变改变字符串(第一个参数)的内容,而"root:/bin:/bash" 是常量字符串,存储在常量区,是只读的,不恩能够修改其内容。解决的办法就是用字符串数组 str[] = "root:/bin:/bash",数组和指针是有本质区别的,
str[]是存储在栈区的,str[] = "root:/bin:/bash"相当于从常量区拷贝其内容到栈区。