请编程实现两个字符串的比较(不能使用库函数strcmp)
时间: 2024-01-07 10:04:59 浏览: 41
以下是两种实现两个字符串比较的方法,均不能使用库函数strcmp:
方法一:逐个字符比较
```python
def str_cmp(str1, str2):
i = 0
while i < len(str1) and i < len(str2):
if str1[i] != str2[i]:
return ord(str1[i]) - ord(str2[i])
i += 1
return len(str1) - len(str2)
```
方法二:使用ASCII码值比较
```python
def str_cmp(str1, str2):
i = 0
while ord(str1[i]) == ord(str2[i]) and str1[i] != '\0' and str2[i] != '\0':
i += 1
if str1[i] == '\0' and str2[i] == '\0':
return 0
else:
return ord(str1[i]) - ord(str2[i])
```
相关问题
C语言请编程实现两个字符串的比较(不能使用库函数strcmp)
以下是C语言实现两个字符串比较的代码,该代码不能使用库函数strcmp:
```c
#include <stdio.h>
int CompareStr(char *str1, char *str2);
int main() {
char s1[20], s2[20];
gets(s1);
gets(s2);
if (CompareStr(s1, s2) > 0)
printf("%s比%s大\n", s1, s2);
else if (CompareStr(s1, s2) < 0)
printf("%s比%s小\n", s1, s2);
else
printf("%s与%s相等\n", s1, s2);
return 0;
}
int CompareStr(char *str1, char *str2) {
do {
if (*str1 > *str2)
return 1;
else if (*str1 < *str2)
return -1;
} while ((*str1++) && (*str2++));
return 0;
}
```
利用指针编程实现函数mystrcmp,实现与库函数strcmp等价的功能
下面是一个利用指针编写的mystrcmp函数的示例代码,其实现与库函数strcmp等价:
```c
int mystrcmp(const char* s1, const char* s2) {
while (*s1 && (*s1 == *s2)) {
s1++;
s2++;
}
return *(const unsigned char*)s1 - *(const unsigned char*)s2;
}
```
该函数接受两个参数,即要比较的两个字符串s1和s2,返回值为整型。函数使用while循环遍历两个字符串,比较它们的每个字符,如果字符相同,指针就向后移动,继续比较下一个字符;如果字符不同,函数就返回它们的ASCII码差值。由于该函数使用了指针,可以避免在函数内部复制字符串,提高了效率。