设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 服务器 > 系统 > 正文

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

发布时间:2021-02-05 00:42 所属栏目:52 来源:网络整理
导读:在某些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.更大的问题是 – 当你更换东西时,返回的字符串是如何被分配的,以及调用函数如何知道是否应该释放它?

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读