首页
社区
课程
招聘
[求助]一个很简单的关于c语言strtok函数的问题,求大神指导下
发表于: 2018-12-15 20:50 2606

[求助]一个很简单的关于c语言strtok函数的问题,求大神指导下

2018-12-15 20:50
2606
在vs2017下写下面这样一个函数
int main()
{
   char* str1="e:\\*";
   char* str2;
   str2=calloc(max_path,sizeof(char*));
   str2=strtok(str1,"*");
  printf_s("%s\n",str2);
}
当st1 用char*定义的时候是没办法编译通过的,
但是当str1用 char str1[]=" e:\\* "定义时就能正常编译通过,求解这是为啥,哪位大佬可以说说么。

还有第二个问题
char* re_strtok(char* path)
{
char s[] = {NULL};
char* p_str;
char* temp_str;
strcpy_s(s, MAX_PATH, path);
p_str = calloc(MAX_PATH, sizeof(char*));
temp_str = calloc(MAX_PATH, sizeof(char*));
temp_str = strtok(s, "*");
return temp_str;
}
这样编译时会返回C2040错误,弄了半天没搞懂。求大佬解释

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
char* str1="e:\\*"; 这样定义 str1 的数据是常量
2018-12-15 22:31
0
雪    币: 8
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
char s[] = {NULL};  这个写法是谁教的
2018-12-16 00:16
0
雪    币: 1266
活跃值: (1307)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
小艾 char* str1="e:\\*"; 这样定义 str1 的数据是常量
正解,函数要在"*"的位置写入0是非法的
2018-12-16 13:56
0
雪    币: 1266
活跃值: (1307)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
第二题首先calloc申请的内存是void *,前面+(char *)强制转换成左值的类型,那些指针没有初始化,是野指针,另外s的大小只有1个字节
最后于 2018-12-16 14:01 被cmputer编辑 ,原因:
2018-12-16 13:59
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
NeverMores char s[] = {NULL}; 这个写法是谁教的[em_1]
谢谢了各位大佬。。
2018-12-16 17:31
0
游客
登录 | 注册 方可回帖
返回
//