strcmp函数:
函数原型:extern int strcmp(const char *s1,const char *s2);
函数用于比较两个字符串的大小,自左向右逐个字符比较,直到出现不同字符或者‘\0’。
返回值等于0时:s1 = s2
返回值大于0时:s1 > s2
返回值小于0时:s1 < s2
strstr函数:
函数原型:extern char *strstr(char *str1, const char *str2);
strstr函数用于判断字符串str2是否是str1的子串。
如果是,则该函数返回str2在str1中首次出现的地址;
反之,返回NULL。
strchr函数:
函数原型:char *strchr(const char *s, int c);
strchr函数用于查找字符串s中首次出现字符c的位置的指针。
如果不存在返回NULL。
下面是strcmp strstr strchr函数的使用,及其指针实现代码:
#include <stdio.h>
#include <string.h>
int my_strcmp(char *src, char *dst);/*strcmp函数的实现*/
char *my_strchr(char *string, int ch);/*strchr函数的实现*/
char *my_strstr(char *str1, char *str2);/*strstr函数的实现*/
int main()
{
char *str1 = "abcdefg";
char *str2 = "abcdifg";
char *str3 = "abcdef-123456";
char *str4 = "abcdefghijk112233";
char *str5 = "ghij";
char *str_chr = NULL;
char *my_str_chr = NULL;
char *str_str = NULL;
char *my_str_str = NULL;
int ret = 0;
ret = strcmp(str1, str2);/*标准库的调用*/
if(ret == 0){
printf("strcmp: str1 = str1\n");
}else if(ret > 0){
printf("strcmp: str1 > str2\n");
}else{
printf("strcmp: str1 < str2\n");
}
ret = 0;
ret = my_strcmp(str1, str2);/*调用自己的strcmp函数*/
if(ret == 0){
printf("my_strcmp: str1 = str1\n");
}else if(ret > 0){
printf("my_strcmp: str1 > str2\n");
}else{
printf("my_strcmp: str1 < str2\n");
}
str_chr = strchr(str3, '-');/*标准库函数strchr的调用*/
printf("strchr: %s\n", str_chr);
my_str_chr = my_strchr(str3, '-');/*调用自己的strchr函数*/
printf("my_str_chr: %s\n", my_str_chr);
str_str = strstr(str4, str5);/*标准库函数strstr的调用*/
printf("strstr: %s\n", str_str);
my_str_str = my_strstr(str4, str5);/*调用自己的strstr函数*/
printf("my_strstr: %s\n", my_str_str);
return 0;
}
int my_strcmp(char *src, char *dst)/*strcmp函数的实现*/
{
int ret = 0;
while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst){
src++;
dst++;
}
if(ret < 0){
ret = -1;
}else if(ret > 0){
ret = 1;
}
return ret;
}
char *my_strchr(char *string, int ch)/*strchr函数的实现*/
{
while(*string && *string != (char)ch){
string++;
}
if(*string == (char)ch)
return (char *)string;
return NULL;
}
char *my_strstr(char *str1, char *str2)/*strstr函数的实现*/
{
char *cp = str1;
char *s1 = NULL;
char *s2 = NULL;
if(!*str2){
return str1;
}
while(*cp){
s1 = cp;
s2 = str2;
while(*s1 && *s2 && !(*s1 - *s2)){
s1++;
s2++;
}
if(!*s2){
return cp;
}
cp++;
}
return NULL;
}