利用指针编程实现函数mystrcmp,实现与库函数strcmp等价的功能
时间: 2023-10-16 09:14:08 浏览: 41
下面是一个利用指针编写的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码差值。由于该函数使用了指针,可以避免在函数内部复制字符串,提高了效率。
相关问题
编写mystrcmp的函数实现类似于strcmp的操作
以下是实现类似于strcmp操作的mystrcmp函数的代码实现:
```c
int mystrcmp(char *a, char *b) {
while (*a && *b) {
if (*a > *b) {
return 1;
} else if (*a < *b) {
return -1;
}
a++;
b++;
}
if (*a == *b) {
return 0;
} else {
return (*a > *b) ? 1 : -1;
}
}
```
该函数的实现方式与strcmp函数类似,通过比较两个字符串的每个字符来判断它们的大小关系。如果两个字符相等,则继续比较下一个字符,直到其中一个字符串结束或者两个字符串不相等为止。如果两个字符串都结束了,说明它们相等,返回0;如果其中一个字符串结束了,另一个字符串还有剩余字符,说明它们不相等,返回它们的大小关系。
编写函数myStrcmp,实现字符串比较的功能
下面是一个简单的实现:
```c
int myStrcmp(char *str1, char *str2) {
int i = 0;
while (str1[i] != '\0' || str2[i] != '\0') {
if (str1[i] != str2[i]) {
return (str1[i] < str2[i]) ? -1 : 1;
}
i++;
}
return 0;
}
```
这个函数会逐个比较两个字符串的字符,直到遇到不同的字符或者其中一个字符串结束。如果遇到不同的字符,就返回它们的 ASCII 码的差值,如果 str1[i] 小于 str2[i],就返回 -1,否则返回 1。如果两个字符串一直都相等,就返回 0。