输入3个字符串,按由小到大的顺序输出; 用指针的方法。

#include <stdio.h>
#include <string.h>
main()
{
void jh(char * p1,char * p2);
char a1[80],a2[80],a3[80],* p1,* p2,* p3;
gets(a1);
gets(a2);
gets(a3);
p1=a1;p2=a2;p3=a3;
if(strcmp(a1,a2)>0) jh(p1,p2);
if(strcmp(a1,a3)>0) jh(p1,p3);
if(strcmp(a2,a3)>0) jh(p2,p3);
puts(a1);
puts(a2);
puts(a3);
}

void jh(char * p1,char * p2)
{
char * t;
strcpy(t,p1);
strcpy(p1,p2);
strcpy(p2,t);
}
怎么不行

第1个回答  2012-02-03
#include <stdio.h>
#include <string.h>
main()
{
void jh(char * p1,char * p2);
char a1[80],a2[80],a3[80],* p1,* p2,* p3;
gets(a1);
gets(a2);
gets(a3);
p1=a1;p2=a2;p3=a3;
if(strcmp(a1,a2)>0) jh(p1,p2);
if(strcmp(a1,a3)>0) jh(p1,p3);
if(strcmp(a2,a3)>0) jh(p2,p3);
puts(a1);
puts(a2);
puts(a3);
}

void jh(char * p1,char * p2)
{
char *t = new char[80];//这里没有分配内存
strcpy(t,p1);
strcpy(p1,p2);
strcpy(p2,t);
delete []t;//记得释放动态内存
}
第2个回答  2012-02-03
很简单,把 char * t; 改成 char t[80]; 就ok了本回答被提问者采纳
第3个回答  2012-02-03
void jh(char * p1,char * p2)
{
char t[80];// 修改成这样 指针赋值需要开辟内存空间 malloc
strcpy(t,p1);
strcpy(p1,p2);
strcpy(p2,t);
}
相似回答