strtok 最近看了《征服C指针》第二版,6.1.2节中提到了strtok函数和strtok_s函数。 strtok 关于strtok的用法,见下面代码: 通过这种方式,可以依次取出以逗号分隔的令牌。运行结果:
注意点: 1.仅在第一次调用时,将字符串传给第一个参数,第二次及以后的调用,第一个参数全部放NULL。 2.之所以能够以这样的方式分割令牌,是因为strtok的内部通过静态变量保存了指向“剩下的字符串”的开头的指针。 3.因此,这样的设计下,当一个地方在使用strtok时,程序的其他地方是无法使用strtok的,而且例如字符串既有逗号分隔的信息也有冒号分隔的信息时,也无法在同时处理逗号分隔的信息和冒号分隔的信息。 4.strtok以空字符结束返回的令牌(变量t),但是会破坏原字符串,是在原字符串插入空字符。 注意这里输出s时,只输出了int。这种设计让人感觉不太好,不过也勉强可以接受。 strtok_s(C11) 这是C11标准新增的函数。 引用自《征服C指针》第二版:
ptr这里就是调用方分配的一个指针,指向剩余字符串的开头。因为要在函数体内修改,因此指针传递,也就是“指向指针的指针”。替代了原先strtok内部的静态变量,因此可以在多个地方同时使用strtok_s了。 s1max存放剩余的字符个数,每调用一次strtok_s,它的值都会相应减少。 代码的写法 注: visual studio中的strtok_s只有三个参数。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/90060.html