strcompare函数
时间: 2024-04-08 15:21:50 浏览: 244
strcompare函数是一种用于比较两个字符串的函数。它可以用来比较字符串的大小关系,并返回一个整数值作为结果。如果调用字符串小于被调用字符串,则返回-1;如果调用字符串大于被调用字符串,则返回1;如果两个字符串相等,则返回0。这个函数可以通过调用字符串的compare()方法来实现。在C++中,可以使用string类的compare函数来进行字符串的比较操作。
相关问题
2.编写一个程序,其中用户自定义函数strcompare函数实现两个字符串s1,s2的比较,函数原型声明为:int strcompare( char *str1 , char *str2 ) ; 分别有如下要求: (1)调用函数时实参用数组名,函数形参用指针变量。
好的,这是一个字符串比较的问题。可以按照以下步骤进行:
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];
}
```
注意,在比较过程中,如果其中一个字符串已经结束,那么就不能再继续比较,否则会访问到非法内存。因此,在循环条件中判断两个字符串中是否有一个已经结束,如果结束了就退出循环。同时,最后还要比较一次两个字符串的结尾字符,以判断它们是否相等。
用c语言编写一个程序,其中用户自定义函数strcompare函数实现两个字符串s1,s2的比较,函数原型声明为:int strcompare( char *str1 , char *str2 ) ;分别有如下要求:(1)调用函数时实参用数组名,函数形参用指针变量。(2)调用函数时实参和函数形参都用指针变量。(3)调用函数时实参用指针变量,函数形参用数组名。[注]:(1)要求当s1== s2时,函数返回值为0;如果s1≠ s2,返回它们二者第一个不相同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不相同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1<s2,则输出负值。(2)两个字符串s1、s2由main函数输入,strcompare函数的返回值也由main函数输出。
下面是代码实现:
```c
#include <stdio.h>
int strcompare_1(char *str1, char *str2);
int strcompare_2(char *str1, char *str2);
int strcompare_3(char *str1, char *str2);
int main() {
char str1[100], str2[100];
int result;
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
// 调用函数1
result = strcompare_1(str1, str2);
printf("函数1的比较结果为:%d\n", result);
// 调用函数2
result = strcompare_2(&str1[0], &str2[0]);
printf("函数2的比较结果为:%d\n", result);
// 调用函数3
result = strcompare_3(&str1[0], &str2[0]);
printf("函数3的比较结果为:%d\n", result);
return 0;
}
// 调用函数时实参用数组名,函数形参用指针变量
int strcompare_1(char *str1, char *str2) {
int i = 0;
while (str1[i] == str2[i] && str1[i] != '\0' && str2[i] != '\0') {
i++;
}
return str1[i] - str2[i];
}
// 调用函数时实参和函数形参都用指针变量
int strcompare_2(char *str1, char *str2) {
int i = 0;
while (*(str1 + i) == *(str2 + i) && *(str1 + i) != '\0' && *(str2 + i) != '\0') {
i++;
}
return *(str1 + i) - *(str2 + i);
}
// 调用函数时实参用指针变量,函数形参用数组名
int strcompare_3(char *str1, char *str2) {
int i = 0;
while (*(str1 + i) == *(str2 + i) && *(str1 + i) != '\0' && *(str2 + i) != '\0') {
i++;
}
return str1[i] - str2[i];
}
```
这里实现了三个函数,分别对应题目中的三种调用方式。其中,函数1和函数3都是实参用数组名,函数形参用指针变量;函数2是实参和函数形参都用指针变量。
阅读全文
相关推荐













