加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

我误解了win32(也许是libc)strtok()

发布时间:2021-02-05 11:02:19 所属栏目:系统 来源:网络整理
导读:在某些CGI代码中,我需要编码很少发生的’’,’'和'‘字符.在编码功能中,如果输入字符串中没有这样的字符,我想立即离开.所以,在入门时,我尝试使用strtok()来找出: char *encode_amp_lt_gt ( char *in ) { ... if ( NULL == strtok( in,"" )) { return in; }

在某些CGI代码中,我需要编码很少发生的’&’,’<'和'>‘字符.在编码功能中,如果输入字符串中没有这样的字符,我想立即离开.所以,在入门时,我尝试使用strtok()来找出:

char *
encode_amp_lt_gt ( char *in ) {
  ...
  if ( NULL == strtok( in,"&<>" )) {
    return in;
  }
  ...
}

但是,即使没有任何分隔符,strtok()也会返回指向in的第一个字符的指针.

如果字符串中没有delim,我希望它返回NULL.

我的代码错了,还是我的期望错了?我不想调用strchr()三次只是为了消除通常的情况.

谢谢!

解决方法

你想要的功能是strpbrk,而不是strtok.更大的问题是 – 当你更换东西时,返回的字符串是如何被分配的,以及调用函数如何知道是否应该释放它?

(编辑:鹰潭站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读