C语言strcmp函数是什么样的代码

作者&投稿:朝俩 (若有异议请与网页底部的电邮联系)
C语言strcmp函数是什么样的代码~

1、cmp

compare,比较的缩写。
2、strcmp是c语言中头文件(字符串函数)中定义的一个用于对两组字符串进行比较的函数,它的返回值是int类型。
假设有两组字符串cs和ct,当csct时,函数返回一个正数。
即:两个字符串自左向右逐个字符相比(按ascii值大小相比较),直到出现不同的字符或遇'\0'为止。如:"a"<"b"
,"a">"a"
,"computer">"compare"
,"comput">"comp"
strcmp函数原型为:int
strcmp(const
char
*s1,const
char
*
s2);

strcmp简介:
函数原型int strcmp(const char *str1,const char *str2);
其作用为
将str1的各个字母的ASCII码与str2的进行比较。
若str1>str2则返回整数,若str1=str2返回0,否则,返回负数
一般这样调用:
if(strcmp(str1,str2)==0)...
else ...
当然,这是C语言的库函数,它的代码存储在某个库文件中。

C语言中strcmp函数是string库的常用函数。其原型代码和介绍如下:

1.先说一下这个函数的实现原理,向strcmp()函数中传入两个字符串(记为str1,str2).传入之后,通过把str1的各字母的ASCII码值和str2的各字母的ASCII码值进行比较。若str1>str2则返回正数,若str1=str2则返回0,否则,则返回负数。

2.下面实现代码:

3.整个函数的原型中得益于“(*str1!='\0')&&(*str1==*str2)”这一句的代码,因为这样当字符指针指向空,意味着字符串已经移动到最后了,比较结束,此时可以退出循环。而如果两个字符串不相等时,则此时函数也可以退出了。

扩展资料:

这个函数要注意一下几点:

①使用*(unsigned char*)str1而不是用*str1。这是因为传入的参数为有符号数,有符号字符值的范围是-128~127,无符号字符值的范围是0~255,而字符串的ASCII没有负值,若不转化为无符号数这回在减法实现时出现错误。

②While循环中ret=*(unsigned char*)str1-*(unsigned char*)str2) && *str1,最后与上str1也可以换成str2,因为前面已经做了相减,无论哪个先为‘\0’都会退出。因为最后与上str1是为了判断str1是否结束,即是否为‘\0’。

③这个函数没有判断参数为NULL时的情况,所以当传入NULL时程序会崩溃。网上看别人说商业化代码都会在调用strcmp前先判断是否为NULL,所以可以不用判断NULL;我在VC6上测试string.h中的strcmp(NULL,NULL),程序也会崩溃。这里可以根据实际情况来决定。

参考资料来源:百度百科-strcmp函数



strcmp(s1,s2)
相同返回0
当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>0 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如: "A"<"B" "a">"A" "computer">"compare" 特别注意:strcmp(s1,s2)这里面只能比较字符串,不能比较数字等其他形式的参数。

strcmp简介:
函数原型int strcmp(const char *str1,const char *str2);
其作用为
将str1的各个字母的ASCII码与str2的进行比较。
若str1>str2则返回整数,若str1=str2返回0,否则,返回负数
一般这样调用:
if(strcmp(str1,str2)==0)...
else ...
当然,这是C语言的库函数,它的代码存储在某个库文件中。
在string.h里只是一个声明。
我给你写一下,大概是这样的:
int strcmp(const char *str1,const char *str2)
{
char *str3=str1,*str4=str2;
while(*str3++!=*str4++&&(*str3||*str4))
{
if(*--str3<*--str4)
return -1;
if(*str3>*str4) return 1;
str3++;str4++;
}
return 0;
}

网页链接



page ,132
title strcmp.asm - compare two strings
;***
;strcmp.asm - routine to compare two strings (for equal, less, or greater)
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
; STRCMP compares two strings and returns an integer
; to indicate whether the first is less than the second, the two are
; equal, or whether the first is greater than the second, respectively.
; Comparison is done byte by byte on an UNSIGNED basis, which is to
; say that Null (0) is less than any other character (1-255).
;
;*******************************************************************************

.xlist
include cruntime.inc
.list

page
;***
;strcmp - compare two strings, returning less than, equal to, or greater than
;
;Purpose:
; Compares two string, determining their lexical order. Unsigned
; comparison is used.
;
; Algorithm:
; int strcmp ( src , dst )
; unsigned char *src;
; unsigned char *dst;
; {
; int ret = 0 ;
;
; while( ! (ret = *src - *dst) && *dst)
; ++src, ++dst;
;
; if ( ret < 0 )
; ret = -1 ;
; else if ( ret > 0 )
; ret = 1 ;
;
; return( ret );
; }
;
;Entry:
; const char * src - string for left-hand side of comparison
; const char * dst - string for right-hand side of comparison
;
;Exit:
; AX < 0, 0, or >0, indicating whether the first string is
; Less than, Equal to, or Greater than the second string.
;
;Uses:
; CX, DX
;
;Exceptions:
;
;*******************************************************************************

CODESEG

public strcmp
strcmp proc \
str1:ptr byte, \
str2:ptr byte

OPTION PROLOGUE:NONE, EPILOGUE:NONE

.FPO ( 0, 2, 0, 0, 0, 0 )

mov edx,[esp + 4] ; edx = src
mov ecx,[esp + 8] ; ecx = dst

test edx,3
jnz short dopartial

align 4
dodwords:
mov eax,[edx]

cmp al,[ecx]
jne short donene
or al,al
jz short doneeq
cmp ah,[ecx + 1]
jne short donene
or ah,ah
jz short doneeq

shr eax,16

cmp al,[ecx + 2]
jne short donene
or al,al
jz short doneeq
cmp ah,[ecx + 3]
jne short donene
add ecx,4
add edx,4
or ah,ah
jnz short dodwords

align 4
doneeq:
xor eax,eax
ret

align 4
donene:
; The instructions below should place -1 in eax if src < dst,
; and 1 in eax if src > dst.

sbb eax,eax
sal eax,1
add eax,1
ret

align 4
dopartial:
test edx,1
jz short doword

mov al,[edx]
add edx,1
cmp al,[ecx]
jne short donene
add ecx,1
or al,al
jz short doneeq

test edx,2
jz short dodwords

align 4
doword:
mov ax,[edx]
add edx,2
cmp al,[ecx]
jne short donene
or al,al
jz short doneeq
cmp ah,[ecx + 1]
jne short donene
or ah,ah
jz short doneeq
add ecx,2
jmp short dodwords

strcmp endp

end


用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数...
写一个函数,实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char*p1,char*p2) 设p1指向字符串s1,p2指向字符串s2, 要求:当s1=s2时,返回0,s1<>s2时,返回它们二者的第一个不同字符的ASCII码;如果s1>s2,输出正值,如果s1<s2,... 展开 推...

C语言 strcmp
经过 char *s1="ABCDEF", *s2="aB"; s1++; s2++;这两条语句后,现在 s1 为"BCDEF",s2 为"B"。strcmp() 函数功能如下:strcmp(s1, s2):若 s1==s2,则返回值为零;若 s1<s2,则返回值为某个负数;若 s1>s2,则返回值为某个正数。大致相当于这段代码(来源 glibc):intSTRCM...

C语言中如何比较字符串的大小?
在C语言中,你可以使用不同的方式来比较字符串的大小。字符串的比较通常依赖于标准库函数和操作符。以下是一些常见的方法:使用strcmp函数:strcmp函数比较两个字符串的内容,返回一个整数值,表示比较结果。通常,如果字符串相等,返回值为0;如果第一个字符串小于第二个字符串,返回值为负数;如果第一...

在c语言中如何比较字符串?
在C语言中比较字符串大小,可以使用库函数strcmp,也可以自己编写比较函数。1、使用库函数。需要包含头文件string.h。声明为:int strcmp(const char *s1, const char *s2);会根据字典序比较s1和s2, 如果二者相等,则返回0;如果s1较小则返回-1;如果s1较大则返回1。比如 strcmp("123", "123")...

strcmp函数前加了一个 ! 是什么意思?
返回1,前者小于后者,返回-1, 在C语言中,0表示真,非0表示假,(!strcmp(emp,"学生"))中,当emp 与“学生”相等时,strcmp返回0, ! 表示取反,变为真,执行if后面的语句,所以, !strcmp(emp,"学生") 的意思就是: 当emp 与“学生”相等时 ,执行 if 后面的语句。

c语言中strcmp函数的cmp是什么单词的缩写
1、cmp 是 compare,比较的缩写。2、strcmp是C语言中头文件<string.h>(字符串函数)中定义的一个用于对两组字符串进行比较的函数,它的返回值是int类型。假设有两组字符串cs和ct,当cs<ct时,函数返回一个负数;当cs==ct时,函数返回0;当cs>ct时,函数返回一个正数。即:两个字符串自左向右...

帮我写一个简易的strcmp函数(C语言)。
① c的strcmp简洁实现可以是这样的:int strcmp(const char* s1, const char* s2){ while(*s1 && (*s1==*s2)) s1++,s2++; return *(const unsigned char*)s1-*(const unsigned char*)s2;}② strcmp的返回值可以有3种,即<0, =0, >0 (任意一个数值),代表的含义分别是:...

C语言中strcmp函数怎么用啊
比较两个字符串呀 strcmp(char* XXX , char* XXX)通常用来看两个字符串相同不 if(0 == strcmp(XXX , XXX)){ ...}

在C语言中举一个strcmp()简单函数实例;及《代表的意思。
原型:extern int strcmp(char *s1,char * s2);用法:#include <string.h> 功能:比较字符串s1和s2。说明:当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>0 举例:\/\/ strcmp.c include <syslib.h> include <string.h> main(){ char *s1="Hello, Programmers!";char ...

c语言strcmp
回答:strcmp用于比较两字符串的大小;从字符串的第一位比起,依次比较两字符串相同位置上字符的ASCIIm码值,当第一次出现字符不同时,若前者的ASCII码值较大,则该函数返回1,相等,则返回0,若前者小,则返回-1;若int a;a=strcmp("ande","anud");第一个不同的字符出现在第三位,前者为d,后者为u,...

驿城区18255812690: 在C语言中,strcmp()是什么函数? -
竺很参松: 头文件:#include <string.h> strcmp() 用来比较字符串(区分大小写),其原型为:int strcmp(const char *s1, const char *s2); 【参数】s1, s2 为需要比较的两个字符串.字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值...

驿城区18255812690: C语言strcmp函数是什么样的代码
竺很参松: strcmp简介: 函数原型int strcmp(const char *str1,const char *str2); 其作用为 将str1的各个字母的ASCII码与str2的进行比较. 若str1&gt;str2则返回整数,若str1=str2返回0,否则,返回负数 一般这样调用: if(strcmp(str1,str2)==0)... else ... 当然,...

驿城区18255812690: C语言中strcmp是什么意思?有什么功能和作用? -
竺很参松: strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值. 比较两个字符串的算法是:逐个比较两个串中对应的字符,字符大小按照ASCII码值确定,从左向右比较,如果遇到不...

驿城区18255812690: C语言中,strcmp( )是什么函数? -
竺很参松: 函数名: strcmp 功 能: 串比较 用 法: int strcmp(char *str1, char *str2); 程序例: #include#includeint main(void) { char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater ...

驿城区18255812690: 在C语言中,strcmp()是什么函数?
竺很参松: 比较字符串的函数,是很基本的函数 原型:extern int strcmp(char *s1,char * s2); 用法:#include <string.h> 功能:比较字符串s1和s2. 说明:当s1<s2时,返回值<0当s1=s2时,返回值=0当s1>s2时,返回值>0 举例: // strcmp.c #...

驿城区18255812690: C语言这段strcmp代码是什么意思 -
竺很参松: char a[20], b[20]; strcmp(a,b)是比较ab两个字符串的大小 如果strcmp(a,b)==0,说明ab字符串相等 如果strcmp(a,b)>0,说明a字符串大于b字符串,也就是a的字母顺序应该在b后面 ----比如"abcd">"aabc", "bcde">"abcd" 如果strcmp(a,b)<0,说明a字符串小于b字符串,也就是a的字母顺序应该在b前面

驿城区18255812690: C语言的strcmp是什么意思?
竺很参松: strcmp(str1,str2)函数就是比较参数中两个字符串str1 和 str2的大小(大小写敏感,即"A" != "a"),如果完全相等,返回0,如果str1 &lt; str2(按照字母顺序比较),返回-1,如果str1 &gt; str2,则返回1. 上面的代码都是在比较字符串sRuleGroup是否等于"PST","PPP"等,然后根据不同的比较结果作不同是事情...

驿城区18255812690: C语言中strcmp是什么意思 -
竺很参松: C/C++函数,比较两个字符串.设这两个字符串为str1,str2,若str1==str2,则返回零;若str1>str2,则返回正数;若str1

驿城区18255812690: c语言中的strcmp函数 -
竺很参松: 函数原型:extern int strcmp(const char *s1,const char *s2); 函数功能:以ascii码值比较两个字符串的大小,当s1<s2时,返回为负数,当s1=s2时,返回值= 0,当s1>s2时,返回正数.头文件:#include <string.h> 参数说明:两个比较字符串的首地址指针.注意事项:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数.

驿城区18255812690: strcmp 是什么函数? -
竺很参松: strcmp是C语言中头文件<string.h>(字符串函数)中定义的一个用于对两组字符串进行比较的函数,它的返回值是int类型.假设有两组字符串cs和ct,当cs<ct时,函数返回一个负数;当cs==ct时,函数返回0;当cs>ct时,函数返回一个正数.即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止.如:"A"<"B" ,"a">"A" ,"computer">"compare" ,"comput">"comp"strcmp函数原型为:int strcmp(const char *s1,const char * s2);

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网