- define 定义
Defined in header <string.h> //在头文件string.h里,编码时需要引用此文件
int strcmp( const char *lhs, const char *rhs ); //参数为字符指针,后续解释指针,参考指针笔记
- return 返回值
Negative value if lhs
appears before rhs
in lexicographical order.(小于)
Zero if lhs
and rhs
compare equal.(等于)
Positive value if lhs
appears after rhs
in lexicographical order.(大于)
#include <string.h>
#include <stdio.h>
void demo(const char* lhs, const char* rhs)
{
int rc = strcmp(lhs, rhs);
if(rc == 0)
printf("[%s] equals [%s]\n", lhs, rhs); //lhs==rhs,返回值为0
else if(rc < 0)
printf("[%s] precedes [%s]\n", lhs, rhs); //lhs<rhs,返回值为负值
else if(rc > 0)
printf("[%s] follows [%s]\n", lhs, rhs); //lhs>rhs返回值为正值。
}
int main(void)
{
const char* string = "Hello World!";
demo(string, "Hello!"); //前五个字符相同,比较第六个字符,前者是“032 (space)”,后者是“033 (!)”,前者先于后者
demo(string, "Hello"); //前五个字符相同,比较第六个字符,前者是“032(space)”,后者是“000(NULL)”,前者后于后者
demo(string, "Hello there"); //前六个字符相同,比较第七个字符,前者是“087 (W)”,后者是“116 (t)”,前者先于后者
demo("Hello, everybody!" + 12, "Hello, somebody!" + 11); // 字符串作为函数参数时,就相当于指针,一个从第12位开始,另一个从第11位开始,都是“body!”
}
结果
[Hello World!] precedes [Hello!] [Hello World!] follows [Hello] [Hello World!] precedes [Hello there] [body!] equals [body!]
本文参考C官网手册
常用的字符和ASCII代码对照表