永发信息网

c++使用指针将字符串进行排序,使用自定义的比较函数。。我想知道我哪里除了小错误?

答案:3  悬赏:50  手机版
解决时间 2021-04-10 12:16
  • 提问者网友:献世佛
  • 2021-04-09 19:54
#include
using namespace std;
int main()
{
short strcmp2(char *c1,char *c2);
char *ch[4] = {"Africa","Asia","America","Europe"};
char **p = ch;
char **_end = (ch+3); char **_end_1 = (ch+2);
char **p1;
char **p2;
char *temp;
char **t = p;
for(p1 = p;p1<=_end_1;p1++){
t = p1;
for(p2 = (p1+1);p2<=_end;p2++){
if(strcmp2(*t,*p2)==1) t = p2;
}
temp = *p1; *p1 = *t; *t = temp;
}
for(p1 = p;p1<=_end;p1++){
cout<<*p1< }
return 0;
}
short strcmp2(char *c1,char *c2){
short b = 0;
for(;(*c1 != '\0')&&(*c2 != '\0');c1++,c2++)
{
if(*c1>*c2) b = 1;
else if (*c1<*c2) b = -1;break;
}
return b;
}

现在的输出,没有很好的排序。。我想知道哪里错了。。为什么错了
最佳答案
  • 五星知识达人网友:長槍戰八方
  • 2021-04-09 21:15
把函数
short strcmp2(char *c1,char *c2){
short b = 0;
for(;(*c1 != '\0')&&(*c2 != '\0');c1++,c2++){
if(*c1>*c2) b = 1;
else if (*c1<*c2) b = -1;break;
}
return b;
}
改成
short strcmp2(char *c1,char *c2){
short b = 0;
for(;(*c1 != '\0')&&(*c2 != '\0');c1++,c2++){
if(*c1>*c2){
b = 1;
break;
}
else if (*c1<*c2){
b = -1;
break;
}
}
return b;
}
原因你自己对照看吧!可续问。
全部回答
  • 1楼网友:街头电车
  • 2021-04-09 22:58
自定义函数时字符串的格式:char *function(); char *function(char ch[]) { return ch; } main { char c[]={"abcdefg"}; printf("%s",function(c)); }
  • 2楼网友:野慌
  • 2021-04-09 21:48
for(;(*c1 != '\0')&&(*c2 != '\0');c1++,c2++) 这个地方100%报错
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯