strtok()函数的返回值为什么不能赋值到指针变量

2019-07-21 06:16发布

void split( char **arr, char *str, const char *del)//字符分割函数的简单定义和实现
{
        char *s =NULL;
        s=strtok(str,del);
        while(s != NULL)
        {
                *arr++ = s;
                s = strtok(NULL,del);
        }
}
一个字符串分割函数,看以上代码,在C语言环境下调试没问题,在Keil uVision5环境下调试,s=strtok(str,del);语句报错误如下:
..HARDWARESTMFLASHstmflash.c(123): error:  #513: a value of type "int" cannot be assigned to an entity of type "char *"。s是指针变量,strtok()函数的返回值是指针,为什么出现以上错误请高手指点!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
geniikid
1楼-- · 2019-07-21 06:48
错误提示很明白呀。strtok返回是一个int,然后你把int赋给了char *。直接报错。至于为什么在keil里面,strtok返回是一个int,我就不知道了。应该返回是一个char *才对。
lijm201811
2楼-- · 2019-07-21 11:50
char *s声明的是指针变量,strtok返回的是指针,赋值给指针变量应该没有问题呀!在C语言中编译没问题,为什么在Keil uVision5中就出错?你看看程序的代码分析一下。
brucewoo
3楼-- · 2019-07-21 14:18
试试把返回值显式转换成32位指针?

一周热门 更多>