您的位置:

c语言strcmp写法,C语言strcmp函数

本文目录一览:

C语言中strcmp的用法是什么?

int strcmp(char *str1, char *str2);\x0d\x0a\x0d\x0a比较字符串str1和str2是否相同。如果相同则返回0;\x0d\x0a如果不同,在不同的字符处如果str1的字符大于str2的字符,则返回1,否则返回-1\x0d\x0a比如:\x0d\x0achar a[]="abcd";\x0d\x0achar *b="abcd";\x0d\x0achar *d="abcde";\x0d\x0aint d=strcmp(a,b); //那么d的值是0\x0d\x0ad=strcmp(b,d); //d的值是-1 因为 '\0' 比'e' 小\x0d\x0ad=strcmp(d,b); //d的值是1,因为 'e' 比'\0'大

C语言中:strcmp函数如何使用?

原型:extern int strcmp(const char *s1,const char * s2);

用法:#include string.h

功能:比较字符串s1和s2。

相关函数:wcscmp

一般形式:strcmp(字符串1,字符串2)

说明:

当s1s2时,返回值0

当s1=s2时,返回值=0

当s1s2时,返回值0

即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:

"A""B" "a""A" "computer""compare"

特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。

帮我写一个简易的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 (任意一个数值),代表的含义分别是: str1 strcmp用的是二进制比较,意思是按字典顺序,比如: 字母a 字母 b;而a A。 (这是因为a的ascii码是97,而A的是65)。

理解了这个,上面的代码就好理解了。 while就是s1,s2从头到位一个一个字符的比较。如果s1为空,或者s1不等于s2,则中断循环 (s1不为空,s2为空,则是*s1 != *s2,退出循环)。返回值是循环中断时的字符(分别s1和s2对应的位置,*s1-*s2, 如果是上面说的 'a' - 'A', 那么返回的就是97-65=32),那么意味着a在A前面, strcmp 0。

之所以先转换成const unsigned char*再作减法,是由于c的char有三种: char, signed char 和unsigned char。 char就是'a'这样的, 而 signed char 则是-127~126之间的数值,而unsigned char则是0~255之间的一个值。 转换成unsigned char就是要“确保” 'a' --- 97。 你要不转换,也是可以的。

说明一点,很多c的lib实现,比如gnu c, 都是把结果处理成: -1, 0, 1, 而不是这个字符对应的ascii码的差值。

c语言中strcmp的用法

int

strcmp(char

*str1,

char

*str2);

比较字符串str1和str2是否相同。如果相同则返回0;

如果不同,在不同的字符处如果str1的字符大于str2的字符,则返回1,否则返回-1

比如:

char

a[]="abcd";

char

*b="abcd";

char

*d="abcde";

int

d=strcmp(a,b);

//那么d的值是0

d=strcmp(b,d);

//d的值是-1

因为

'\0'

比'e'

d=strcmp(d,b);

//d的值是1,因为

'e'

比'\0'大