如何正确使用c语言strtok函数

 时间:2024-10-12 02:20:19

1、strtok函数用来分解字符串,但是不像其他高级语言中split分解字符串返回数组,strtok只是分解字符串下一段内容。我们看一下通常的strtok用法,如下所示:

如何正确使用c语言strtok函数

2、strtok调用步骤:1. 第一次调用strtok函数时,传递原始字符串以及分解字符串。2. 之后再调用strtok函数时,只需要传递NU讣嘬铮篌LL和分解字符串。函数返回值为分解得到字符串指针,当最后为NULL时,循环退出。特别注意的是:strtok对原始字符串的一个副作用是,它会修改原始字符串,在匹配到分解字符串时,设置为字符串结束符0。

如何正确使用c语言strtok函数

3、在实际编程时,笔者发现有时候因为使用strtok函数,有些想当然的用法。比如,对strtok函数的返回值的判断。很多人可能以为strtok如果未找到分解字符串时会返回NULL,这其实就大错特错了。

如何正确使用c语言strtok函数

4、通过对strtok函数的调用,我们发现并没有很方便,尤其是相比c语言中已经提供了字符串匹配函数strstr/strchr的情况下。我们完全可以埠们萁猕自己在循环中使用strstr/strchr等函数实现字符串分解,所以,这就是strtok函数使用场景太少,从而不常用造成生疏的原因。比如,我们用strchr实现上述分割运算如下:

如何正确使用c语言strtok函数

5、还一个注意点是:strtok函数不是线程安全函数。在循环中调用strtok函数时,我们给strtok函数传递了NULL指针,那么函数怎么知棕百脾酷道从原始字符串中哪个位置继续执行分解操作呢?不难猜测,strtok函数内部使用了静态变量,保存了下一次分解起始位置。对于多线程调用strtok函数时,使用静态全局变量会被多个线程重复改变,造成错乱等问题。一个可能的strtok函数的实现:

如何正确使用c语言strtok函数

6、幸好,在windows环境中提供了strtok_s,而linux函数中提供了strtok_r安全函数。这两个函数相比strtok多了一个保存中间指针变量的参数,这样就不用使用静态变量,从而保证多线程调用的安全性。所以,如果使用strtok,更推荐使用strtok_r版本。

如何正确使用c语言strtok函数
  • 如何用C++做字符串的连接
  • 怎样用C++输入字符串
  • 在C语言中怎样创建一个文件?
  • 二叉树的深度怎么算
  • c语言如何实现将结构体写入到文件
  • 热门搜索
    新学期新气象手抄报图片 手抄报图片大全3年级 防疫有我爱卫同行手抄报 党史国史手抄报 谷雨手抄报 端午节手抄报第一名 疫情手抄报内容怎么写 爱国卫生月手抄报 关于妇女节的手抄报 红领巾心向党手抄报图片