用C语言请编写函数str_cmp实现两个字符串的比较。 函数原型:str_cmp(char *p1,char *p2) 说明: 设p1指向字符串s1,p2指向字符串s2。要求当时,返回值为0;若,返回二者第1个不同字符的ASCII码差值(如“BOY”与“BAD”,第2个字母不同,“O”与“A”之差为79-65=14);如果,则输出正值;如果,则输出负值。 程序运行结果示例1: Please input two strings: China↙ Chinese↙ They are different an
时间: 2024-03-03 21:49:55 浏览: 163
下面是实现你所需功能的代码:
```c
#include <stdio.h>
int str_cmp(char *p1, char *p2);
int main() {
char s1[100], s2[100];
printf("Please input two strings: ");
scanf("%s %s", s1, s2);
int res = str_cmp(s1, s2);
if (res == 0) {
printf("They are the same string.\n");
} else if (res > 0) {
printf("The first different character has a larger ASCII code in the first string, with a value of %d.\n", res);
} else {
printf("The first different character has a larger ASCII code in the second string, with a value of %d.\n", -res);
}
return 0;
}
int str_cmp(char *p1, char *p2) {
while (*p1 != '\0' && *p2 != '\0') {
if (*p1 != *p2) {
return *p1 - *p2;
}
p1++;
p2++;
}
if (*p1 == *p2) {
return 0;
} else if (*p1 == '\0') {
return -(*p2);
} else {
return *p1;
}
}
```
解释一下代码各部分的作用:
1. `str_cmp` 函数的原型: `int str_cmp(char *p1, char *p2)`,接收两个字符指针 `p1` 和 `p2`。
2. 在 `main` 函数中,先定义两个长度为 100 的字符数组 `s1` 和 `s2`,然后通过 `scanf` 函数读入两个字符串。
3. 调用 `str_cmp` 函数比较两个字符串,将返回值赋值给 `res`。
4. 根据 `res` 的值输出不同的结果。
`str_cmp` 函数的实现如下:
1. 利用 `while` 循环遍历两个字符串,如果遇到不同的字符,计算该字符的 ASCII 码差值并返回。
2. 如果两个字符串完全相同,返回 0。
3. 如果其中一个字符串已经遍历到结尾,另一个字符串还有字符未遍历,返回该字符串最后一个字符的 ASCII 码的相反数(为了区分是哪个字符串中出现了不同的字符)。
4. 如果两个字符串长度不同,且前面的字符都相同,返回两个字符串长度的差值。
阅读全文