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

用strtok出现异常,大家帮忙看看

2012-02-16 
用strtok出现错误,大家帮忙看看我的代码如下://开奖计算(用户账号和所压分健值)voidget_result(char*userc

用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);
}


热点排行