用strtok出现错误,大家帮忙看看
我的代码如下:
//开奖计算(用户账号和所压分健值)
void get_result(char * usercode,char* d_key,char* d_score){
srand(time(0));//设定随机种子数
char test[255];
char rand_num[255];
/////////得到三位随机数,数字不能相同////
strcpy(rand_num,_itoa(rand()%9,test,10));
_itoa(rand()%9,test,10);
while(test[0] == rand_num[0])
{
_itoa(rand()%9,test,10);
}
strcat(rand_num,test);
_itoa(rand()%9,test,10);
while(test[0] == rand_num[0] || test[0] == rand_num[1])
_itoa(rand()%9,test,10);
strcat(rand_num,test);
cout < < rand_num < < endl;
//////////////////////////////////////////
/////////分别取出对应的健值和压注的分数////
//char get_key[50];//压注键值
//char get_score[50];//压注分数
char *substring;
char spes[] = "- ";
substring = strtok(d_key,spes);
while(substring != NULL){
cout < < substring < < endl;
substring = strtok(NULL,spes);
}
}
调用如下:
get_result( "1000 ", "5-78-23-70-55 ", "77 ");
结果弹出错误框
"0x10241299 "指令引用的 "0X004162F5 "内存.该内存不能为 "written "
[解决办法]
char usercode[]= "1000 ";
char key[]= "5-78-23-70-55 ";
char score[]= "77 ";
get_result(usercode, key, score); //参数需要是可修改的,不能是 const 串
[解决办法]
strtok(d_key,spes)会改变d_key的内容.
改正:
void get_result(char * usercode,char* d_key,char* d_score)
{
......
}
===>
void get_result(const char * usercode, const char* d_key_org, const char* d_score)
{
char* d_key = (char*)malloc(strlen(d_key_org)+1);
strcpy(d_key, d_key_org);
......
free(d_key);
}