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

发布时间:2022-11-27

本文目录一览:

1、C语言中strcmp的用法是什么?
2、C语言中:strcmp函数如何使用?
3、帮我写一个简易的strcmp函数(C语言)。
4、c语言中strcmp的用法

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

int strcmp(char *str1, char *str2); 比较字符串str1str2是否相同。如果相同则返回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' 大

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

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

#include <string.h>

功能:
比较字符串s1s2相关函数:
wcscmp
一般形式:
strcmp(字符串1,字符串2)
说明:

  • s1 > s2 时,返回值 > 0
  • s1 == s2 时,返回值 = 0
  • s1 < s2 时,返回值 < 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 == str2 时返回0
  • str1 > str2 时返回>0
  • str1 < str2 时返回<0
    strcmp用的是二进制比较,意思是按字典顺序,比如:字母a > 字母A(这是因为a的ASCII码是97,而A的是65)。 理解了这个,上面的代码就好理解了。while循环就是s1s2从头到位一个一个字符的比较。如果s1为空,或者s1不等于s2,则中断循环(s1不为空,s2为空,则是*s1 != *s2,退出循环)。返回值是循环中断时的字符(分别s1s2对应的位置,*s1 - *s2,如果是上面说的 'a' - 'A',那么返回的就是97-65=32),那么意味着aA前面,strcmp > 0。 之所以先转换成const unsigned char*再作减法,是由于C语言的char有三种:charsigned charunsigned charchar就是'a'这样的,而signed char则是-127~126之间的数值,而unsigned char则是0~255之间的一个值。转换成unsigned char就是要“确保” 'a' --- 97。你要不转换,也是可以的。 说明一点,很多C语言库的实现,比如GNU C,都是把结果处理成:-1、0、1,而不是这个字符对应的ASCII码的差值。

c语言中strcmp的用法

int strcmp(char *str1, char *str2);

比较字符串str1str2是否相同。如果相同则返回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' 大