#include<stdio.h>
#include<string.h>
int main()
{
void swap(char *p1,char *p2,char *p3);
char a[10],b[10],c[10];
char *pa=a,*pb=b,*pc=c;
scanf("%s%s%s",pa,pb,pc);
swap(pa,pb,pc);
printf("%s %s %s\n",a,b,c);
}
void swap(char *p1,char *p2,char *p3)
{
void exchange(char *p1,char *p2);
exchange(p1,p2);
exchange(p2,p3);
exchange(p1,p2);
}
void exchange(char *p1,char *p2)
{
char * temp=NULL;
if(strcmp(p1,p2)>0)
{
strcpy(temp,p1);
strcpy(p1,p2);
strcpy(p2,temp);
}
}
请问这么做的思路有没有问题
C可以用malloc
char * temp = (char *)malloc(sizeof(char) * 100);
exchange这个函数中char * temp=NULL这个地方有问题,会报段错误,因为他是一个空指针,此处可以给他分配一个内存空间,或者让其指向一个char类型的数组
char * temp = new char[100];
这样写
另外之前我给你代码的,只要交换指针就可以了。没必要复制来复制去。
别忘了
#include<stdlib.h>