首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-12-10 
C 字符串指针和数组问题。最近练习下C字符串的操作,用到这个strtok函数时,发现他函数原型是char *strtok(ch

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

热点排行