文章目录
前言
c语言中常用的字符串处理函数strcmp总结。
一、strcmp函数使用
原型
int strcmp ( const char * str1, const char * str2 );
strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCII码比较
规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
注意:strcmp函数比较两字符串的大小,和字符串本身长度无关
使用
#include<stdio.h>
#include<string.h>
int main()
{
char* p1 = "abc";
char* p2 = "abc";
char* p3 = "abcd";
char* p4 = "e";
printf("----------------------\n");
printf(" %d\n", strcmp(p1,p2 ));
printf("----------------------\n");
printf(" %d\n", strcmp(p2,p3));
printf(" %d\n", strcmp(p3,p2));
printf("----------------------\n");
printf(" %d\n", strcmp(p3,p4));//ASCII 'a' - 'e' = 97 - 101 = -4
printf(" %d\n", strcmp(p4,p3)); //ASCII 'a' - 'e' = 101 - 4 = 4
printf(" %d\n", 'a');
printf(" %d\n", 'e');
}
}
执行
$ gcc strcmp.c -o strcmp
$ ./strcmp
----------------------
0
----------------------
-100
100
----------------------
-4
4
97
101
二、实现方法
#include<stdio.h>
#include<string.h>
int Strintcmp(const char * str1, const char * str2)
{
//1、两个不同的字符串比较时,直接 return (*str1-*str2);//返回两字符相减的ASCII码值
//2、字符串相同时进入while循环,字符串结束符是'\0',添加一个循环的结束条件!(*str1|*str2)=='\0')
while ((*str1 == *str2)&&(!(*str1|*str2)=='\0')){
str1++;
str2++;
}
return (*str1-*str2);//返回两字符相减的ASCII码值
}
int main()
{
char* p1 = "abc";
char* p2 = "abc";
char* p3 = "abcd";
char* p4 = "e";
printf("----------------------\n");
printf(" %d\n", Strintcmp(p1,p2 ));
printf("----------------------\n");
printf(" %d\n", Strintcmp(p2,p3));
printf(" %d\n", Strintcmp(p3,p2));
printf("----------------------\n");
printf(" %d\n", Strintcmp(p3,p4));
printf(" %d\n", Strintcmp(p4,p3));
printf(" %d\n", 'a');
printf(" %d\n", 'e');
}
执行
$ gcc strcmp.c -o strcmp
$ ./strcmp
----------------------
0
----------------------
-100
100
----------------------
-4
4
97
101