一个C语言程序,为什么编译错误了

#include<stdio.h>#include<string.h>main(){char*str1[20],*str2[20],*str3[20];charswap(... #include <stdio.h>
#include <string.h>
main()
{
char *str1[20],*str2[20],*str3[20];
char swap(char *p1,char *p2);
printf("please input three strings\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("%s\n%s\n%s\n",str1,str2,str3);

}
char swap(char *p1,char *p2)
{
char *p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}
展开
 我来答
xiaowei01357
2012-03-07 · TA获得超过241个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:92.2万
展开全部
首先 字符串不能那么定义,两种方式
1.char *str1;//char *就代表你定义的是一个指针,指针可以操纵内存,打到字符串的目的,不过这样不安全,因为你没有指出字符串的长度
2.char str1[20]//这就表明你定义了一个char型的20个长度的数组
另外你要知道,数组的名字其实就是该数组的第一个元素的地址,也就是 char *str1和char str1[20]中的str1代表的都是字符串的地址
该程序,还有错误,你在main函数 运行的时候并没有 声明 char swap(..)函数,所以编译器不认识swap()函数,两种解决办法,第一:你在main函数之前给他个声明,这样char swap(char *p1,char *p2); 那么 你函数体写在后面就没关系了。第二:把 swap(..)整个函数 拉到 main函数的上面。
淦海瑶s1
2012-03-07 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:766万
展开全部
char *str1[20],*str2[20],*str3[20];
char *p[20];
这两个吧*都去掉,就好了

解释:定义字符串数组,加上*,相当于二维数组,不能那么赋值
追问
去掉了,还是出现一个错误error C4716: 'swap' : must return a value
追答
我用win-tc没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
uglyduckling90
2012-03-07 · 超过13用户采纳过TA的回答
知道答主
回答量:39
采纳率:100%
帮助的人:31.5万
展开全部
不懂你程序要实现什么功能, 但是改掉点东西可以运行了
#include <stdio.h>
#include <string.h>

char swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
return 'x';
}

void main()
{
char str1[20],str2[20],str3[20];

printf("please input three strings\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("%s\n%s\n%s\n",str1,str2,str3);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzu_liuwei
2012-03-07 · TA获得超过372个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:226万
展开全部
char swap(char *p1,char *p2)
{
char p[20];//不应该是char *p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}
另外,swap函数没有返回值,定义为void即可
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZSNH_KHY
2012-03-07 · TA获得超过313个赞
知道小有建树答主
回答量:451
采纳率:0%
帮助的人:417万
展开全部
#include <stdio.h>
#include <string.h>
void main()
{
char str1[20],str2[20],str3[20];
void swap(char *p1,char *p2);
printf("please input three strings\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("%s\n%s\n%s\n",str1,str2,str3);

}
void swap(char *p1,char *p2)
{
char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式