设计一个函数strcmp, 实现两个字符串的比较,函数原型为:int strcmp(char *str1, char *str2), 使用这个函数,如果 str1 > str2 返回 1,如果 str1 == str2 返回 0,如果 str1 < str2 则返回 -1
时间: 2024-05-03 16:22:38 浏览: 8
以下是一种可能的实现方式:
```c
int strcmp(char *str1, char *str2) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] > str2[i]) {
return 1;
} else if (str1[i] < str2[i]) {
return -1;
}
i++;
}
if (str1[i] == '\0' && str2[i] == '\0') {
return 0;
} else if (str1[i] == '\0') {
return -1;
} else {
return 1;
}
}
```
该函数使用了一个 while 循环,不断比较两个字符串中对应位置的字符,直到遇到字符串的结束标志 '\0' 或者两个字符串中的某一个位置上的字符不同。如果 str1 > str2,则返回 1,如果 str1 < str2,则返回 -1,如果 str1 与 str2 相等,则返回 0。
需要注意的是,当其中一个字符串已经遍历结束,但另一个字符串还没有结束时,应该将其视为更大的字符串。例如,"abc" 与 "abcd" 进行比较时,应该返回 -1。
相关问题
写一个函数,实现两个字符串的比较。函数原型为: int strcmp(char*p1 , char* p2); 要求:当字符串相等时,返回0 当字符串不相等时,返回它们两者第一个不同字符的Ascii码差值
以下是实现两个字符串比较的函数:
```c
int strcmp(char* p1, char* p2) {
while (*p1 && *p2 && (*p1 == *p2)) { //比较两个字符串中对应位置的字符
p1++;
p2++;
}
return *p1 - *p2; //返回两个字符串第一个不同字符的Ascii码差值
}
```
在主函数中可以这样使用:
```c
#include <stdio.h>
int strcmp(char* p1, char* p2);
int main() {
char str1[] = "hello";
char str2[] = "hello";
char str3[] = "world";
int result1 = strcmp(str1, str2); //字符串相等,结果为0
int result2 = strcmp(str1, str3); //字符串不相等,结果为-15
printf("result1 = %d\n", result1);
printf("result2 = %d\n", result2);
return 0;
}
int strcmp(char* p1, char* p2) {
while (*p1 && *p2 && (*p1 == *p2)) { //比较两个字符串中对应位置的字符
p1++;
p2++;
}
return *p1 - *p2; //返回两个字符串第一个不同字符的Ascii码差值
}
```
写一个函数,实现两个字符串的比较过程。即自己写一个strcmp函数,函数的原型为:int
自己写一个字符串比较函数strcmp的实现需要注意以下几点:
1. 函数原型为int strcmp(const char *str1, const char *str2),参数为两个要比较的字符串的指针。
2. 函数需要按照字典序进行比较,即从左到右逐个字符比较其ASCII值。
3. 当两个字符不相等时,根据其ASCII值的大小关系返回-1(表示str1小于str2),0(表示str1等于str2)或1(表示str1大于str2)。
4. 在比较过程中需要判断字符串是否已经比较到结尾(即'\0'字符),如果有某个字符串已经到结尾,则需要根据此时的结果返回-1、0或1。
5. 如果两个字符串完全相等,需要返回0。
6. 如果其中一个字符串已经到结尾而另一个字符串还有未比较的字符,则已经到结尾的字符串较小。
下面是一个简单的strcmp函数的实现:
```cpp
int strcmp(const char *str1, const 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;
}
}
```
以上函数会逐个比较str1和str2中的字符,根据ASCII值的大小关系返回结果。如果两个字符串完全相等,则返回0。