文章目录
- 前言
- 一、strcmp函数使用
- 二、实现方法
前言
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 = -4printf(" %d\n", strcmp(p4,p3)); //ASCII 'a' - 'e' = 101 - 4 = 4printf(" %d\n", 'a');printf(" %d\n", 'e');}
}
执行
$ gcc strcmp.c -o strcmp
$ ./strcmp
----------------------0
-----------------------100100
-----------------------4497101
二、实现方法
#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
-----------------------100100
-----------------------4497101