C语言中stringh字符串处理函数库


  前面有文章已经介绍过一些常用的字符串处理函数,今天这篇介绍前面没有介绍过的一些函数,而在程序设计中,进行字符串的相关操作是很频繁的,因此多了解字符串处理的函数库中的函数是非常重要的,废话不多说,下面进入主题。

  功能:用于检索两个字符串str1与str2中首个相同字符出现的位置。如:str1=i love you!,str2=you,可以看到首个字符为o。其函数从str1的第一个字符向后检索,直至遇到\0。

  返回值:如果str1与str2中含有相同的字符,那么返回指向str1中第一个相匹配的字符串指针,当然如果没有匹配的字符,那么返回空指针NULL。

  注意:该函数不会创建新空间,来存放倒序后的字符串,而是在原有字符串基础上进行修改,因此该函数不能修改str指向的字符串常量,因为字符串常量在静态存储区中不能被修改(常量不能被修改),因此只能逆置字符数组。

  注意:与上一个函数strrev()函数一样,其参数str只能是字符数组,不能是字符常量,原因同上。

  参数:str为需要设置的字符串(当然只能操作字符数组),字符c为需要设置的字符,n为需要在str中设置的个数。

  说明:该函数在str1中查找包含在str2中的字符并用NULL(\0)来替换(注意只要检测到str2中的字符,就分割,如str2=#$,只要遇到其中之一或之二就产生分割),如果找到,那么就返回被分割的字符串,找不到返回NULL。

  注意:1、每次调用strtok()函数时,只能分割一次,后面不管,要想继续分割需要反复调用strtok()函数,但是一旦第二次及以上次数调用该函数那么第一个参数就需要改变变为NULL,来替换str1,如二次调用有:strtok(NULL,char *str2)才能继续分割,否则效果会跟第一次调用结果一样。

  2、该函数只能操作字符数组,不能操作字符常量,如操作char *p=i love you时,将会出错。