C语言编写一个函数int strcmp(char* p1,char* p2),实现两个字符串的比较。当字符串1=字符串2时,返回0;当字符串1!=字符串2时,返回它们两者第一个不同字符的ASCII码的差值。
时间: 2024-05-09 20:21:02 浏览: 66
```c
int strcmp(char* p1, char* p2) {
while(*p1 && *p2 && *p1 == *p2) {
p1++;
p2++;
}
return *p1 - *p2;
}
```
解释:
该函数使用了指针遍历字符串的方法,比较两个字符串是否相等。首先判断两个指针所指向的字符是否相等,如果相等,则继续向后遍历,直到有一个指针所指向的字符不相等或者遍历到字符串末尾。最后返回两个指针所指向的字符ASCII码的差值。如果两个字符串相等,则差值为0。
相关问题
C语言编写一个函数int strcmp(char* p1,char* p2),实现两个字符串的比较。当字符串1=字符串2时,返回0;当字符串1!=字符串2时,返回它们两者第一个不同字符的ASCII码的差值。
```c
int strcmp(char* p1, char* p2) {
while (*p1 && *p2 && (*p1 == *p2)) {
p1++;
p2++;
}
return *p1 - *p2;
}
```
解释:
该函数使用指针遍历两个字符串,判断是否相同,如果不同则返回它们两者第一个不同字符的ASCII码的差值。如果两个字符串长度不同,且前面的字符都相同,那么当其中一个字符串到达结尾时,另一个字符串还有字符未遍历,此时会出现*p1或*p2为0的情况,因此while循环中首先判断*p1和*p2是否为0。如果两个字符相等,则指针向后移动,继续比较下一个字符。如果两个字符不相等,则返回它们两者第一个不同字符的ASCII码的差值(即*p1-*p2)。如果两个字符串完全相同,则while循环结束后,返回0。
c语言写一个函数int strcmp(char *p1, char *p2)用来实现两个字符串的比较。在主函数中输入两个字符串,输出对应的结果。 输入: hello world 则输出:-1 输入: world hello 则输出1 输入: hello hello 则输出:0
好的,下面是函数int strcmp(char *p1, char *p2)的代码实现:
```c
#include <stdio.h>
int strcmp(char *p1, char *p2) {
int i = 0;
while (*(p1 + i) == *(p2 + i)) {
if (*(p1 + i) == '\0')
return 0;
i++;
}
return *(p1 + i) - *(p2 + i);
}
int main() {
char str1[20], str2[20];
printf("请输入两个字符串,用空格隔开:");
scanf("%s %s", str1, str2);
int result = strcmp(str1, str2);
printf("比较结果为:%d\n", result);
return 0;
}
```
在这个程序中,我们首先定义了一个函数`strcmp`,该函数接收两个`char *`类型的指针参数,分别指向两个字符串。函数中的`while`循环用来比较两个字符串中的字符,直到两个字符不相等或者有一个字符串结束为止。在循环中,我们使用了指针的加法来遍历字符串中的字符。如果两个字符串完全相等,那么函数返回0;否则,返回两个不同字符的差值。
在主函数中,我们先定义了两个字符串数组`str1`和`str2`,并通过`scanf`函数从标准输入中读取用户输入的两个字符串。然后,我们调用`strcmp`函数来比较这两个字符串,并将比较结果打印出来。
阅读全文