#include<stdio.h>#include<stdlib.h>
char sort(char *x,char *y,char *z);
int main(void)
{
char *x, *y, *z;
char a[81],b[81],c[81];
printf("输入三个字符串:\n");
gets(a);
gets(b);
gets(c);
x=&a[0];
y=&b[0];
z=&c[0];
scanf("%s%s%s",&x,&y,&z);
sort(&x,&y,&z);
printf("排序:");
printf("%s%s%s ",x,y,z);
system("PAUSE");
return 0;
}
char sort(char *x,char *y,char *z)
{
char temp=0;
if(*x>*y)
{
temp=*x;
*x=*y;
*y=temp;
}
if(*y>*z)
{
temp=*y;
*y=*z;
*z=temp;
}
if(*x>*y)
{
temp=*y;
*y=*x;
*x=temp;
}
return 0;
}
能麻烦你讲讲我的那个的错误点吗?
追答那可多了。
1、没有必要用指针,char *x, *y, *z;
2、即使使用指针,这里scanf("%s%s%s",&x,&y,&z);不用取地址,同时
gets(a);
gets(b);
gets(c);
这里已经接收了3个字符串了,就没有必要再接受一次。
3、sort(&x,&y,&z);由于x,y,z是指针,所以这里不用取地址。
4、char sort(char *x,char *y,char *z)由于x,y,z是指针,char temp=0;只是一个char的变量,无法把字符串交换,所以需要借助一个buffer来处理,同时要通过拷贝,而不是直接赋值。
那个是复制粘贴过程中的问题,重点是我写那个玩意的问题