各位看官们,大家好,上一回中咱们说的是字符串比较的例子,这一回咱们说的例子是:字符串查找。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,在C语言的标准库中为我们提供了字符串查找函数,我们只需要包含string.h头文件就可以使用字符串查找函数。这点和字符串比较函数一样,标准库为我们提供了三个字符串查找函数:strchr,strrchr和strstr。当然了,标准库中也有一些类似查找功能的函数,但是这些函数的使用概率比较小,因此我们就不详细介绍了。接下来我们分别介绍查找函数的用法及其注意事项。
strchr函数原型:char * strchr(const char *s1, int c)
strchr函数用法:它把c转换成char类型的字符,然后在s1中查找该字符,如果找到该字符,那么返回该字符在字符串中第一次出现的位置,如果没有找到,那么返回空指针。
strchr注意事项:它把int类型的变量强制转换成char类型的变量,其实是按照字符的ASCII码值进行转换。比如97会被转换为字符’a’。我们想查找某个字符时,只需要输入它的ASCII码值就可以。另外,在查找过程中,字符串的小尾巴也会当作字符串的一部分,所以可以在字符串中找到空字符的位置。
我们举一个实际的例子来说明,在程序中定义如下字符串:
char *s1 = "abcdABCDabcd";
char *s2 = "abc";
int c = 97;
我们使用strchr函数来查找c在字符串s1中的位置,查找的结果如下:
a(97) is found in abcdABCDabcd, and location is 1.
(0) is found in abcdABCDabcd, and location is 13. //" \0 can't be show"
这里的字符串比较简单,大家一眼就可以看出来字符a在字符串s1中,而且位于第一位。我们再和程序的运行结果去对比,显然是一致的。另外,也可以在字符串中查找空字符,也就是字符串的小尾巴,查找的结果位于字符串末尾,这点我们可以在上面的程序运行结果中看到。
strrchr函数原型:char * strrchr(const char *s1, int c)
strrchr函数用法:它把c转换成char类型的字符,然后在s1中查找该字符,如果找到该字符,那么返回该字符在字符串中最后一次出现的位置,如果没有找到,那么返回空指针。这点和strchr正好相反。
strrchr注意事项:它和strchr的注意事项相同,因此就不详细说明了。
我们举一个实际的例子来说明,还是使用刚才的字符串:
char *s1 = "abcdABCDabcd";
char *s2 = "abc";
int c = 97;
我们使用strrchr函数来查找c在字符串s1中的位置,查找的结果如下:
a(97) is found in abcdABCDabcd, and re-location is 9.
(0) is found in abcdABCDabcd, and re-location is 13. //" \0 can't be show"
大家可以看到,字符串s1中包含两个a字符,一个位于字符串的第一位,另外一个位于字符串的第九位。这和程序的运行结果是一致的。另外,字符串s1中只有一个空字符,而且位于字符串的末尾,我们再和程序的运行结果去对比,这显然也是一致的。
大家或许已经发现了,我们刚才使用的两个字符串查找函数,都是用来查找单个字符的,有没有查找整个字符串的函数?答案是肯定的。标准库为我们提供了strstr函数,接下来我们详细介绍它。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-34116-1.html