|
发表于 2023-11-8 20:16:56
|
显示全部楼层
这段代码有几个错误:
1. 在声明和定义 strcmp 函数时,参数类型应该是 string* arr[2] 而不是 string*arr[2] 。正确的声明应该是 int strcmp(string* arr[2]) 。
2. 在 strcmp 函数中,比较字符串相等的语句应该使用 == 而不是 = 。因此, if(arr[0]=arr[1]) 应该改为 if(arr[0]==arr[1]) 。
3. 在 strcmp 函数中,比较字符串大小的语句应该使用 < 和 > 而不是 < 和 > 。因此, if(arr[0]<arr[1]) 和 if(arr[0]>arr[1]) 应该分别改为 if(*arr[0]<*arr[1]) 和 if(*arr[0]>*arr[1]) 。
4. 在 main 函数中,应该使用 new 关键字为 arr 数组中的每个元素分配内存,以便存储输入的字符串。可以使用 arr[ i] = new string; 来分配内存。
5. 在 main 函数结束前,应该使用 delete 关键字释放为 arr 数组分配的内存,以避免内存泄漏。可以使用 delete arr[ i]; 来释放内存。
下面是修改后的代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int strcmp(string* arr[2])
- {
- if(*arr[0] == *arr[1])
- return 0;
- if(*arr[0] < *arr[1])
- return -1;
- if(*arr[0] > *arr[1])
- return 1;
- }
- int main()
- {
- string* arr[2];
- for(int i=0; i<2; i++)
- {
- arr[ i] = new string;
- cin >> *arr[ i];
- }
- int result = strcmp(arr);
-
- // 释放内存
- for(int i=0; i<2; i++)
- {
- delete arr[ i];
- }
-
- return 0;
- }
复制代码
这样,代码就可以正确地比较输入的两个字符串并返回结果了。 |
|