发布时间:2024-06-21 12:01
在使用字符串处理函数前,需要在程序开头使用编译预处理命令 #include
(六)字符串比较函数 strcmp()
函数调用格式:strcmp(str1,str2);
函数功能:按字典序比较字符串 str1 和 str2 的大小。
比较规则:将两个字符串自左向右逐个字符进行ASCLL码大小比较,直到出现不同字符或遇'\0'停止;
若全部字符相同,返回 0 值;
若出现第一对不同字符,计算其ASCII之差;
ASCII之差为正整数,则 str1 > str2 ,返回值为1;
ASCII之差为负整数,则 str1 < str2 ,返回值为-1;
注意:字符串 str1 和 str2 的比较不能用条件表达式 str1 > str2 之类的表示。
//strcmp()函数演示
#include
#include
int main()
{
char str_1[2][20] = { "China","China" }; //全部字符相同
char str_2[2][20] = { "China n","China b" }; //第一对不同字符'n'、'b',即'\110'、'\98'
char str_3[2][20] = { "China N","China b" }; //第一对不同字符'N'、'b',即'\78'、'\98'
int result_1, result_2, result_3;
//比较二维数组str中的两个字符串,并把其返回值赋值给result。
result_1 = strcmp(str_1[0], str_1[1]);
printf("%d\n", result_1); //返回值为0
result_2 = strcmp(str_2[0], str_2[1]);
printf("%d\n", result_2); //返回值为1
result_3 = strcmp(str_3[0], str_3[1]);
printf("%d\n", result_3); //返回值为-1
return 0;
}
//突发奇想,用这个strcmp()函数比较中文字符
#include
#include
int main()
{
char str_1[2][20] = { "我爱中国","我爱中国" }; //全部字符相同
char str_2[2][20] = { "中","国" }; //不同中文字符'中'、'国',即'D6D0'、'B9FA'
char str_3[2][20] = { "统","一" }; //不同中文字符'统'、'一',即'CDB3'、'D2BB'
int result_1, result_2, result_3;
//比较二维数组str中的两个字符串,并把其返回值赋值给result。
result_1 = strcmp(str_1[0], str_1[1]);
printf("%d\n", result_1); //两字符串相同,返回值为0
result_2 = strcmp(str_2[0], str_2[1]);
printf("%d\n", result_2); //'D6D0' > 'B9FA',返回值为1
result_3 = strcmp(str_3[0], str_3[1]);
printf("%d\n", result_3); //'CDB3' < 'D2BB',返回值为-1
return 0;
}
中文字符集GB18030编码方案于2000年发布第一版,收录汉字27533个;
2005年发布第二版,收录汉字70000余个,以及多种少数民族文字。
GB18030采用单字节、双字节、四字节分段编码。
汉字GB国际编码查询:https://www.qqxiuzi.cn/bianma/guobiaoma.php
ps:中文字符的比较方法和英文差不多,都是自左向右逐个比较,直到遇到第一对不同字符,
比较其GB编码的大小。
经过一些粗略的查阅资料,GB编码是由汉字字符的区位码转化为十六进制得来的
一些相关链接:https://www.cnblogs.com/leesf456/p/5317574.html
https://zhuanlan.zhihu.com/p/46216008
https://cloud.tencent.com/developer/article/1343240
【从零开始学zabbix】一丶Zabbix的介绍与部署Zabbix
嵌入式Android音频系统(三)Android音频系统涉及的文件
解决pygal.style的LightColorizedStyle参数问题
Wireshark之流量包分析+日志分析 (护网:蓝队)web安全 取证 分析黑客攻击流程(上篇)
【历史上的今天】7 月 15 日:Mozilla 基金会正式成立;Enigma 密码机的首次工作;任天堂推出 FC 游戏机
[报错]ufunc ‘add‘ did not contain a loop with signature matching types (dtype(‘<U32‘), dtype(‘<U32‘))
MindSpore报错"TypeError: parse() missing 1 required positional."