本文目录一览:
1、C语言中strcmp的用法是什么?
2、C语言中:strcmp函数如何使用?
3、帮我写一个简易的strcmp函数(C语言)。
4、c语言中strcmp的用法
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' 大
C语言中:strcmp函数如何使用?
原型:
extern int strcmp(const char *s1, const char *s2);
用法:
#include <string.h>
功能:
比较字符串s1
和s2
。
相关函数:
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
时返回0str1 > str2
时返回>0str1 < str2
时返回<0
strcmp
用的是二进制比较,意思是按字典顺序,比如:字母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语言库的实现,比如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' 大