c语言怎么进行字符串比较

比较方法:1、bcmp(),比较字符串的前n个字节是否相等;2、strcmp(),区分大小写的比较字符串;3、stricmp(),不区分大小写的比较字符串;4、strncmp()或strnicmp(),区分大小写的比较字符串的前n个字符。

c语言怎么进行字符串比较

本教程操作环境:windows7系统、c99版本、Dell G3电脑。

使用bcmp()–比较内存(字符串)的前n个字节是否相等

原型为:

int bcmp(const void *s1, const void * s2, int n);

登录后复制

【参数】s1, s2 为需要比较的两块内存(或两个字符串),n 为要比较的长度。

立即学习“C语言免费学习笔记(深入)”;

【返回值】如果 s1, s2 的前 n 个字节相等或者 n 等于 0,则返回 0,否则返回非 0 值。

bcmp() 函数不检查NULL。

实际上,bcmp() 和 memcmp() 功能相同,用来比较内存块的前 n 个字节是否相等,但是 s1, s2 两个参数为指针,又很奇怪的位于 string.h 文件中,也可以用来比较字符串。

示例:

#include #include int main (){    char *s1 = "Golden Global View";    char *s2 = "Golden Global View";    if( !bcmp(s1, s2, 7) )        printf("s1 equal to s2 in first 7 bytes");    else        printf("s1 not equal to s2 in first 7 bytes");    return 0;}

登录后复制

使用strcmp()–比较字符串(区分大小写) 

其原型为:

int strcmp(const char *s1, const char *s2);

登录后复制

【参数】s1, s2 为需要比较的两个字符串。

字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,若差值不为0 则将差值返回。例如字符串”Ac”和”ba”比较则会返回字符”A”(65)和’b'(98)的差值(-33)。

【返回值】若参数s1 和s2 字符串相同则返回0。s1 若大于s2 则返回大于0 的值。s1 若小于s2 则返回小于0 的值。

注意:strcmp() 以二进制的方式进行比较,不会考虑多字节或宽字节字符。

示例:

#include main(){    char *a = "aBcDeF";    char *b = "AbCdEf";    char *c = "aacdef";    char *d = "aBcDeF";    printf("strcmp(a, b) : %d", strcmp(a, b));    printf("strcmp(a, c) : %d", strcmp(a, c));    printf("strcmp(a, d) : %d", strcmp(a, d));}

登录后复制

输出:

strcmp(a, b) : 32strcmp(a, c) :-31strcmp(a, d) : 0

登录后复制

使用stricmp()–比较字符串(不区分大小写)    

原型为:

int strcmp(char *s1, char *s2);

登录后复制

【参数说明】s1, s2 为需要比较的两个字符串。

字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。stricmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,若差值不为0 则将差值返回。例如字符串”Ac”和”ba”比较则会返回字符”A”(65)和’b'(98)的差值(-33)。

【返回值】若参数s1 和s2 字符串相同则返回0。s1 若大于s2 则返回大于0 的值。s1 若小于s2 则返回小于0 的值。

注意:stricmp()是Windows下特有的,linux下具有相同功能的函数是strcasecmp(),包含在头文件strings.h下。

另外一个不区分大小写比较字符串的函数是strcmpi(),strcmpi()是stricmp()的宏定义,实际未提供此函数。

示例:比较两个字符串的大小。

#include#includeint main(void){    /*定义两个字符串*/    char* s1 = "http://see.xidian.edu.cn/cpp/u/biaozhunku/";    char* s2 = "http://see.xidian.edu.cn/cpp/shujujiegou/";    /*比较字符串(不分大小写)*/    int result = stricmp(s1,s2);  // 也可以改成strcmpi()    if(result>0)    {        printf("Result: s1 > s2");    }    else if(result

输出:

Result: s1 > s2

登录后复制

使用strncmp()--比较字符串的前n个字符(区分大小写)    

其原型为:

int strncmp ( const char * str1, const char * str2, size_t n );

登录后复制

【参数】str1, str2 为需要比较的两个字符串,n为要比较的字符的数目。

字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strncmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,直到字符结束标志'',若差值不为0,则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。

注意:要比较的字符包括字符串结束标志'',而且一旦遇到''就结束比较,无论n是多少,不再继续比较后边的字符。

【返回值】若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回大于0的值;若s1 若小于s2,则返回小于0的值。

注意:如果两个字符不同,GCC返回该字符对应的ASCII码的差值,VC返回-1或1。但是让人为难的是,strnicmp()、strcmp()、stricmp()在GCC和VC下都返回-1或1,而不是ASCII的差值。

实例:对2组字符串进行比较。

#include#includeint main(void){    char* s1 = "http://see.xidian.edu.cn/cpp/u/xitong/";    char* s2 = "HTTP://see.xidian.edu.cn/cpp/u/xitong/";    char* s3 = "abc";    char* s4 = "abcxyz";    char* s5 = "123456";    char* s6 = "123";    printf("s1-s2=%d", strncmp(s1, s2, 20));  // 是否区分大小写    printf("s3-s4=%d", strncmp(s3, s4, 100));  // s3的长度小于s4    printf("s5-s6=%d", strncmp(s5, s6, 100));  // s5的长度大于s6    return 0;}

登录后复制

VC6.0下运行结果:

s1-s2=1s3-s4=-1s5-s6=1

登录后复制

GCC下运行结果:

s1-s2=32s3-s4=-120s5-s6=52

登录后复制

使用strnicmp()--比较字符串的前n个字符(区分大小写)    

原型为:

int strnicmp ( const char * str1, const char * str2, size_t n );

登录后复制

【参数】str1, str2 为需要比较的两个字符串,n为要比较的字符的数目。

【返回值】若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回大于0的值;若s1 若小于s2,则返回小于0的值。

与strncmp()不同的是,如果两个字符不同,GCC和VC都返回-1或1,而不是返回对应的ASCII的差值。

有关strnicmp()的其他说明请查看strncmp(),这里仅举例演示,不再赘述。

另外一个不区分大小写比较字符串前n个字符的函数是strncmpi(),strncmpi()是strnicmp()的宏定义,实际未提供此函数。

示例:对6组字符串进行比较。

#include#includeint main(void){    char* s1 = "http://see.xidian.edu.cn/cpp/u/xitong/";    char* s2 = "HTTP://see.xidian.edu.cn/cpp/u/xitong/";    char* s3 = "abc";    char* s4 = "abcxyz";    char* s5 = "123456";    char* s6 = "123";    printf("s1-s2=%d", strnicmp(s1, s2, 20));  // 是否区分大小写    printf("s3-s4=%d", strnicmp(s3, s4, 100));  // s3的长度小于s4    printf("s5-s6=%d", strnicmp(s5, s6, 100));  // s5的长度大于s6    return 0;}

登录后复制

VC6.0下运行结果:

s1-s2=0s3-s4=-1s5-s6=1

登录后复制登录后复制

GCC下运行结果:

s1-s2=0s3-s4=-1s5-s6=1

登录后复制登录后复制

相关推荐:《C语言视频教程》

以上就是c语言怎么进行字符串比较的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2432109.html

(0)
上一篇 2025年3月3日 08:55:41
下一篇 2025年3月3日 08:56:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vscode怎样安装c语言环境

    一、安装c/c++扩展 二、安装编译环境mingw-w64  配置环境变量,以WIN10为例 ,此电脑-属性-高级系统设置-环境变量-系统变量-path-添加一条E:\mingw-w64\mingw32\bin\(你安装的编译环境的地址) …

    2025年4月2日 编程技术
    100
  • vscode怎么搭建C语言开发环境

    安装c/c++扩展 安装编译环境mingw-w64 下载地址:http://www.mingw-w64.org/doku.php/download 配置环境变量,以WIN10为例 ,此电脑-属性-高级系统设置-环境变量-系统变量-path-…

    2025年4月2日 编程技术
    100
  • vscode配置c语言开发环境

    获取c/c++扩展 打开vscode,使用ctrl+shift+x快捷键打开商店,搜索C/C++,安装插件并重启vscode 安装GCC 下载MinGW打开安装程序,安装到D盘(需要创建MinGW文件夹),安装完成之后生成MinGW安装管理…

    2025年4月2日 编程技术
    100
  • debian readdir如何与其他工具集成

    Debian系统中的readdir函数是用于读取目录内容的系统调用,常用于C语言编程。 本文将介绍如何将readdir与其他工具集成,以增强其功能。 方法一:C语言程序与管道结合 首先,编写一个C程序调用readdir函数并输出结果: #i…

    2025年4月2日
    100
  • debian readdir的用户界面友好吗

    Debian系统中的readdir函数并非用户界面组件,而是一个底层系统调用,用于读取目录内容。它通常在C语言程序中被调用,作为文件系统操作的一部分。readdir返回一个指向dirent结构体的指针,该结构体包含文件名等目录项信息。 re…

    2025年4月2日
    100
  • 如何通过Golang日志诊断Debian网络问题

    本文介绍如何利用Golang日志机制在Debian系统中高效诊断网络问题。我们将探讨几种实用方法,帮助您快速定位并解决网络连接故障。 一、日志记录 标准库log包: Golang的log包是记录网络请求和响应细节的理想选择。 在发送请求前后…

    2025年4月2日
    100
  • static在c和c++中的区别

    static关键字在C和C++中用于控制变量的生命周期和作用域。在C中,它延长局部变量和限制全局变量的作用域。在C++中,它还用于定义类成员变量和函数、命名空间中的变量和函数,以及函数内联。 static在C和C++中的区别 static是…

    2025年3月31日
    100
  • c语言中=和==有什么区别

    在 C 语言中,= 是赋值运算符,用于改变变量值;== 是相等比较运算符,用于比较两个表达式的值,返回布尔值。 C 语言中 = 和 == 的区别 在 C 语言中,= 和 == 是两个不同的运算符,具有不同的功能。 =(赋值运算符) 将表达式…

    2025年3月31日
    100
  • c语言中减等于是什么意思

    减等于(-=)运算符在 C 语言中将变量减去一个值并存储回该变量。使用方法为:变量 -= 表达式;。常见场景包括递减变量、从累加器中减值以及调整计数器。 C 语言中的减等于(-=)含义 减等于(-=)是一个复合赋值运算符,它将某个变量减去一…

    2025年3月31日
    100
  • c语言中二维数组怎么表示

    二维数组存储表格状数据,在 C 语言中声明为数组的数据类型。 初始化方式包括:1) 逐个元素初始化;2) 行级初始化;3) 使用指针。 元素访问通过行列索引。 C 语言中二维数组的表示 二维数组用于表示具有行和列维度的表格状数据结构。在 C…

    2025年3月31日
    100

发表回复

登录后才能评论