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


当前第2页 返回上一页

其原型为:

1

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

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

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

注意:要比较的字符包括字符串结束标志'\0',而且一旦遇到'\0'就结束比较,无论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组字符串进行比较。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include<stdio.h>

#include<string.h>

int 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\n", strncmp(s1, s2, 20));  // 是否区分大小写

    printf("s3-s4=%d\n", strncmp(s3, s4, 100));  // s3的长度小于s4

    printf("s5-s6=%d\n", strncmp(s5, s6, 100));  // s5的长度大于s6

    return 0;

}

VC6.0下运行结果:

1

2

3

s1-s2=1

s3-s4=-1

s5-s6=1

GCC下运行结果:

1

2

3

s1-s2=32

s3-s4=-120

s5-s6=52

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

原型为:

1

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组字符串进行比较。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include<stdio.h>

#include<string.h>

int 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\n", strnicmp(s1, s2, 20));  // 是否区分大小写

    printf("s3-s4=%d\n", strnicmp(s3, s4, 100));  // s3的长度小于s4

    printf("s5-s6=%d\n", strnicmp(s5, s6, 100));  // s5的长度大于s6

    return 0;

}

VC6.0下运行结果:

1

2

3

s1-s2=0

s3-s4=-1

s5-s6=1

GCC下运行结果:

1

2

3

s1-s2=0

s3-s4=-1

s5-s6=1

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

以上就是c语言怎么进行字符串比较的详细内容!

返回前面的内容

相关阅读 >>

一个c源程序中至少应包括一个什么函数

C语言中的“且”用什么符号表示?

C语言有几种注释方式

struct student在C语言中是什么意思?

C语言中保留两位小数怎么表示

一个c源程序必须包含一个main函数吗

C语言的输入输出语句有哪些?

C语言换行符号是什么

C语言怎么求字符串的长度并输出

C语言console.writeline什么意思?

更多相关阅读请进入《C语言》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...