有一个C语言问题,哪个大神可以帮我解答呢?小女子感激不尽,在线等哦,谢谢

#include<stdio.h>
#include<string.h>
void OrderStr( char *p1, char *p2, char *p3)
{
char tmp;
if(strcmp(*p1,*p2)>0)
{
tmp=*p1;
*p1=*p2;
*p2=tmp;
}
if(strcmp(*p1,*p3)>0)
{
tmp=*p1;
*p1=*p3;
*p3=tmp;
}
if(strcmp(*p2,*p3)>0)
{
tmp=*p2;
*p2=*p3;
*p3=tmp;
}
}
int main()
{
char str1[20]="I am a student";
char str2[20]="I am happy";
char str3[20]="hello";
OrderStr(str1,str2,str3);
printf("%s %s %s\n",str1,str2,str3);
return 0;
}
这是代码,目的是顺序输出主函数中的三个字符串。但运行出了问题,是下面这个:
>d:\用户目录\我的文档\visual studio 2012\projects\consoleapplication15\consoleapplication15\8-2(3).cpp(12): error C2664: “strcmp”: 不能将参数 1 从“char”转换为“const char *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\用户目录\我的文档\visual studio 2012\projects\consoleapplication15\consoleapplication15\8-2(3).cpp(18): error C2664: “strcmp”: 不能将参数 1 从“char”转换为“const char *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
请问这个报错是什么意思?程序应该怎么改呢

#include<stdio.h>
#include<string.h>
void OrderStr( char *p1, char *p2, char *p3)
{
char tmp[20];
if(strcmp(p1,p2)>0)
{
strcpy(tmp,p1);
strcpy(p1,p2);
strcpy(p2,tmp);
}
if(strcmp(p1,p3)>0)
{
strcpy(tmp,p1);
strcpy(p1,p3);
strcpy(p3,tmp);
}
if(strcmp(p2,p3)>0)
{
strcpy(tmp,p2);
strcpy(p2,p3);
strcpy(p3,tmp);
}
}
int main()
{
char str1[20]="I am a student";
char str2[20]="I am happy";
char str3[20]="hello";
OrderStr(str1,str2,str3);
printf("%s %s %s\n",str1,str2,str3);
return 0;
}追问

你好,我按照你的代码改过了,结果没有顺序输出呀

追答

你复制我的代码,我测试是顺序输出

追问

是由小到大输出吗

好吧 我运行过了 和我的一样 我的顺序输出是想要由小到大输出 我没有表达清楚

追答

输出来明明是从小到大,你看不来?

追问

这明明是由大到小啊

难道str1最小吗?

追答

str1 最小。。。。
服了。。。字符串都不知道怎么比较

追问

为什么str1最小?

请问字符串怎么比较?

温馨提示:答案为网友推荐,仅供参考
相似回答