strtok函数实现一直出现写入冲突有关问题

strtok函数实现一直出现写入冲突问题

#include <stdlib.h>
#include <stdio.h>
char* strtok1(char *str, const char *delim)
{
static char *sstr ;
static char *s1, *s2;

if(*str == NULL)
str = sstr;
if(*str == NULL)
return NULL;

s1 = str;

while(*str!= '\0')
{
if(*str == *delim)
{
*str = '\0';
sstr = str + 1;
break;
}
str++;
}
return s1;
}
int main()
{
char *str ="asdf,dsgfsd,dsfhs";
char *str1 = strtok1(str, ",");
char* str2 = strtok1(NULL, ",");
}


想实现下strtok函数,在while循环中会出现写入冲突,这个错误时怎么回事?求指导
c

------解决方案--------------------
char *str ="asdf,dsgfsd,dsfhs";
改用数组的
------解决方案--------------------

int main(){
char *str ="asdf,dsgfsd,dsfhs";
*str = '\0';
return 0;

一定出错的 char *str 为只读的不可写
------解决方案--------------------
这里的判断应该是这样写吧:
if (/***/str == NULL) str = sstr;     
if (/***/str == NULL) return NULL;

其他地方没看,呵呵。 
------解决方案--------------------
char *str ="asdf,dsgfsd,dsfhs";字符串内存是不能修改的  可以动态分配或者用数组搞定
------解决方案--------------------
 if(*str == NULL) /////
        str = sstr;
    if(*str == NULL) /////
        return NULL;

确实基础还要加强啊.

你这里是相判断指针, 应该用 str == NULL,
*str表示对指针解引用了.  注意同定义指定变量时的*加以区别.