用指针的方法编写程序,完成如下函数:intmystrcmp1(char*str1,char*str2)——比较两个字符串str1、str2。若str1>str2,返回正数1;str1=str2,返回0;str1<str2,返回负数-1。
时间: 2023-06-25 12:05:55 浏览: 75
下面是使用指针实现字符串比较的函数:
```c
int mystrcmp1(char* str1, char* str2) {
while (*str1 != '\0' && *str2 != '\0') {
if (*str1 > *str2) {
return 1;
} else if (*str1 < *str2) {
return -1;
}
str1++;
str2++;
}
if (*str1 == '\0' && *str2 == '\0') {
return 0;
} else if (*str1 == '\0') {
return -1;
} else {
return 1;
}
}
```
该函数的实现方式是使用两个指针分别指向两个字符串的开头,然后依次比较两个指针所指向的字符。如果两个字符相等,则继续比较下一个字符;如果不相等,则将两个字符的差作为返回值。如果其中一个字符串比另一个短,则认为短的字符串小于长的字符串。如果两个字符串相等,则返回0。
相关问题
用指针的方法编写程序,完成如下函数的功能:intmystrcmp1(char*str1,char*str2)——比较两个字符串str1、str2。若str1>str2,返回正数1;str1=str2,返回0;str1<str2,返回负数-1。
下面是使用指针的方式实现strcmp函数的代码:
```c
int mystrcmp1(char *str1, char *str2) {
while (*str1 && *str2 && (*str1 == *str2)) {
str1++;
str2++;
}
if (*str1 > *str2) {
return 1;
} else if (*str1 < *str2) {
return -1;
} else {
return 0;
}
}
```
解释如下:
- `while (*str1 && *str2 && (*str1 == *str2))`:这一行代码是一个循环语句,用于比较两个字符串的每个字符,直到遇到不相等的字符或者遍历完其中一个字符串。
- `*str1` 和 `*str2`:这两个变量是指针,用于指向字符串中的字符。
- `(*str1 == *str2)`:这是一个逻辑判断语句,用于判断两个字符是否相等。
- `str1++` 和 `str2++`:这两个语句用于将指针指向下一个字符。
- `if (*str1 > *str2) { return 1; } else if (*str1 < *str2) { return -1; } else { return 0; }`:这是一个条件语句,用于判断两个字符串的大小关系。如果 `str1` 大于 `str2`,返回1;如果 `str1` 小于 `str2`,返回-1;如果两个字符串相等,返回0。
5.用指针的方法编写程序,完成如下函数的功能:intmystrcmp1(char*str1,char*str2)——比较两个字符串str1、str2。若str1>str2,返回正数1;str1=str2,返回0;str1<str2,返回负数-1。
下面是用指针的方法编写的mystrcmp1函数的实现代码:
```c
int mystrcmp1(char *str1, char *str2) {
int result = 0;
while (*str1 != '\0' || *str2 != '\0') {
if (*str1 == *str2) {
str1++;
str2++;
continue;
} else if (*str1 > *str2) {
result = 1;
break;
} else {
result = -1;
break;
}
}
return result;
}
```
在该函数中,首先初始化变量result为0,表示两个字符串相等。然后使用while循环遍历两个字符串,如果两个字符串当前字符相等,则继续比较下一个字符;如果str1 > str2,说明str1大于str2,此时将result设置为1并跳出循环;如果str1 < str2,说明str1小于str2,此时将result设置为-1并跳出循环。最后返回result的值即可。
阅读全文