读书人

C 字符串指针和数组有关问题

发布时间: 2013-12-10 15:05:55 作者: rapoo

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

读书人网 >C语言

热点推荐