C 字符串指针和数组问题。
最近练习下C字符串的操作,用到这个strtok函数时,发现他函数原型是
char *strtok(char s[], const char *delim);
这里他用的是字符串数组,而我用下边的这个字符串指针为何运行不出来呢?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *p = "abcd aaa iii lll fdiaso 123";
char *res;
res = strtok(p," ");
while(res!=NULL)
{
printf("string is %s \n",res);
res = strtok(NULL," ");
}
return 0;
}
[解决办法]
char *p = "abcd aaa iii lll fdiaso 123";是指针常量,不允许被修改的。
请参考这里:http://stackoverflow.com/questions/13208828/strtok-segmentation-fault
[解决办法]
因为当使用char *p=“abcd”,也就是字符指针变量的来表示字符串数据的时候,这个字符串数据是常量,而strtok试图修改这一常量,所以非法了。
字符指针本质上是首先在存储器中存放一个字符串常量,然后将首地址赋给p