文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>strtok引起的char* a 与 char a[] 思考

strtok引起的char* a 与 char a[] 思考

时间:2010-08-24  来源:beyondzsq

void testStrtok(){
    char* dateTime2 = "2010-08-24 10:18:09";
    char dateTime[] = "2010-08-24 10:18:09";

    cout << strlen(dateTime) << " " << strlen(dateTime2) << endl;
    char* result = NULL;
    result = strtok(dateTime,"- :");
    while(result != NULL)
    {
        cout << result << endl;
        result = strtok(NULL,"- :");
    }
}


strtok的应用可参见:http://www.cplusplus.com/reference/clibrary/cstring/strtok/
主要的作用是将字符串str 按 字符delimiters划分成多个token;功能类似于java中的split,但是它是一个个的返回,不是返回链表。delimiters中可包含多个字符。划分后,str的内容将会改变。、

当给strtok传递参数dateTime2时,将收到SIGSEGV信号,表示非法的内存访问。而dateTime则不会。

究其原因,是因为dateTime2指向指向的是一串“字符串常量”。其值是不能改变的。如:dateTime2[2]='1'也将收到SIGSEGV的信号,同样的非法访问内存。而strtok函数正是需要修改其参数str的值:将分隔符处设置为NULL。

因此,出现了以上的非法内存访问。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载