C语言问题:程序出错 #include<stdio.h>

#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;
}

修改后:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void sort(char *x,char *y,char *z);
int main(void)
{
char a[81],b[81],c[81];
printf("输入三个字符串:\n");
gets(a);
gets(b);
gets(c);

sort(a,b,c);
printf("排序:");
printf("%s\n%s\n%s\n",a,b,c);

system("PAUSE");
return 0;
}
void sort(char *x,char *y,char *z)
{

char temp[81]={0};
if(strcmp(x,y)>0)
{
strcpy(temp,x);
strcpy(x,y);
strcpy(y,temp);
}
if(strcmp(y,z)>0)
{
strcpy(temp,y);
strcpy(y,z);
strcpy(z,temp);
}
if(strcmp(x,z)>0)
{
strcpy(temp,x);
strcpy(x,z);
strcpy(z,temp);
}
}追问

能麻烦你讲讲我的那个的错误点吗?

追答

那可多了。
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来处理,同时要通过拷贝,而不是直接赋值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-12
大婶 怎么可能是 这句话出错...
#include<stdio.h>#include<stdlib.h> 如果你是写成一行的 肯定会出错啊

这样写
#include<stdio.h>
#include<stdlib.h>

还有错的话 ... 那就是你编译器 环境配置问题了追问

那个是复制粘贴过程中的问题,重点是我写那个玩意的问题

第2个回答  2012-12-12
看看是不是 文件有问题
相似回答