2.编写一个程序,其中用户自定义函数strcompare函数实现两个字符串s1,s2的比较,函数原型声明为:int strcompare( char *str1 , char *str2 ) ; 分别有如下要求: (1)调用函数时实参用数组名,函数形参用指针变量。
时间: 2024-02-22 16:58:21 浏览: 154
好的,这是一个字符串比较的问题。可以按照以下步骤进行:
1. 定义函数strcompare,其形参为两个字符指针,指向要比较的两个字符串。
2. 在函数内部,使用循环逐一比较两个字符串中的每一个字符,直到出现不相等的字符或者其中一个字符串结束为止。
3. 如果两个字符串中的所有字符都相等,那么返回0;如果出现不相等的字符,那么返回它们的ASCII码之差。
4. 在主函数中,定义两个字符串数组,然后调用strcompare函数进行比较,最后根据返回值输出比较结果。
下面是示例代码:
```c
#include <stdio.h>
int strcompare(char *str1, char *str2);
int main() {
char str1[] = "hello";
char str2[] = "world";
int result;
result = strcompare(str1, str2);
if (result == 0) {
printf("两个字符串相等\n");
} else if (result < 0) {
printf("字符串1小于字符串2\n");
} else {
printf("字符串1大于字符串2\n");
}
return 0;
}
int strcompare(char *str1, char *str2) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return str1[i] - str2[i];
}
i++;
}
return str1[i] - str2[i];
}
```
注意,在比较过程中,如果其中一个字符串已经结束,那么就不能再继续比较,否则会访问到非法内存。因此,在循环条件中判断两个字符串中是否有一个已经结束,如果结束了就退出循环。同时,最后还要比较一次两个字符串的结尾字符,以判断它们是否相等。
阅读全文