首页 > 编程知识 正文

电脑vlookup函数怎么用,vlookup函数匹配的使用方法

时间:2023-05-04 06:36:39 阅读:144943 作者:4941

strtok函数的使用注意事项

1 .函数原型及其基本应用

strtok函数用于分解字符串,其原型为:

char*strtok(charstr[],const char *delim );

其中str是要分解的字符串,delim是字符串中用于分解的字符,函数返回分解字符串的第一个指针。 请注意,分解并不是生成新字符串,只是在源字符串上进行加工以改变源字符串。 源字符串发生了变化。

首先从最简单的应用来看下面的例子1。

//例1 # include string.hvoidmain ({ chars [ ]=' 192.168.0.26 '; char *delim='.'; char *p; printf('%s ',strtok(s ) ) s,delim ); while ((p=strtok null,delim ) ) ) )、p ); printf((n ); }

从例1可以看出,strtok函数的基本用法是:输入字符串数组,就可以根据一定的分隔符(在例1中为'.')将长字符串分割成短字符串。 需要注意的是,如果要拆分长字符串,则在第一次调用中,strtok函数的第一个参数必须传递要拆分的字符串;如果以后再次调用该函数,则strtok函数的第一个参数必须传递空值。 这是因为如果strtok的第一个参数为NULL,则默认情况下函数使用上一个未拆分字符串的未拆分字符串

这个例子是关于最常见的基本应用,但是光知道这些很容易忽视很多细节问题,所以本文将继续讨论值得关注的问题。

2 .使用注意事项1

首先必须强调的是,strtok函数在进行字符串分解时,其第一个参数char str[]发生了变化,如上所述,只是对源字符串做了手脚,也就是说改变了源字符串。 用例1的字符串来说,' 192.168.0.26 '是源字符串,调用strtok进行分解后,在' 192http://www.Sina.com/1683358 www.Sina.com/026 ' 请注意,这将使上一个字符串在打印或使用时成为独立的字符串,即' 192 '、' 168 '、'0'和' 26 '。 这些字符串仍在源字符串中,但后面有自己的字符串结束标志“”。

3 .使用注意事项2

请注意,在注意事项1中,源字符串已更改。 另外,请注意strtok函数原型的第一个参数是字符数组char str[]。 传递参数时参数可以是指针,但如果指针是字符串常量指针,则源字符串将发生更改,因此无法更改字符串常量。 例如,以下示例2是错误的。

//例2#include string.hvoid main () { char *s='192.168.0.26 '; 与//例1唯一的区别是字符串数组变成了字符串常量指针! char *delim='.'; char *p; printf('%s ',strtok(s ) ) s,delim ); while ((p=strtok null,delim ) ) ) )、p ); printf((n ); }

因此,如果输入是字符串常量指针,则不能直接传递给strtok函数的第一个参数。 虽然可以将此字符串常量指针的内容逐个复制到字符串数组中,然后进行分解,但建议不要这样做。 如果无法使用strtok函数进行字符串分解,则可以使用其他函数(如strstr函数或strchr )进行类似的分解

4 .使用注意事项3

请注意,对于作为strtok函数第二个参数的分隔符,可以使用delim中的字符作为分隔符,而不是严格匹配。 delim可以理解为分隔符的集合。 这非常重要! 当然,我们在分解字符串时很少使用多个分隔符。 结果,很多人在写例子时只讨论了一个分隔符。 很多人在看例子的时候错误地认识到了delim的作用。

5 .使用注意事项4

如果strtok函数分解的字符串的第一个字符是分隔符,则strtok函数将忽略第一个字符,并直接从以下分隔符计算: 例如,对于'.192.168.0.26 ',将忽略第一个字符'.',分解的第一个字符串为' 192 '。

总之,strtok函数乍一看很简单,但使用起来有很多细节需要注意,应该理解和掌握。 因为strtok函数不是线程安全的,所以很多时候程序员不用这个函数就能实现自己的字符串分割函数来保证线程安全。 不过,在Linux中定义了strtok_r函数,但该函数是strtok

如果您还有其他意见,请多关照。 谢谢你。

参考资料:

3358 blog.csdn.net/help xs/article/details/6958975

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。