输入三个字符串,按由小到大的顺序输出(用指针法)这个哪里错了

输入三个字符串,按由小到大的顺序输出(用指针法)这个哪里错了

img

swap函数只改变了指针的指向,实际上的字符串并没有发生改变

swap函数里改一下就好了


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char str1[20], str2[20], str3[20]; 
    void swap(char* p1, char* p2);
    printf("Pleaseenter  threestring : \n"); 
    gets(str1); 
    gets(str2);
    gets(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("\n");
    printf("%s \n%s \n%s \n", str1, str2, str3); 
    return 0;
}
void swap(char* p1, char* p2)
{
    char* p = (char*)malloc(100);
    *p = *p1;
    *p1 = *p2;
    *p2 = *p;
}