字符串排序问题 ,我这个总是出现乱码怎么回事啊?

#include <stdio.h>
#include <string.h>
int main(){
char a[10], b[10], c[10];
char *p1=a;
char *p2=b;
char *p3=c;
char *temp=a;
printf("please input the three strings:\n");
scanf("%s,%s,%s",a,b,c);

if ((strcmp(a, b)) > 0) 
{
    temp= p1;
    p1=p2;
    char*p2=temp;
}
else if ((strcmp(a, c)) > 0) 
{
    temp=p1;
    p1=p3;
    char*p3=temp;
}
else if ((strcmp(b, c)) > 0) 
{
    temp=p3;
    p3=p2;
    char*p2=temp;
}
printf("%s,%s,%s\n", p1, p2, p3);
return 0;

}

你这个怎么排序啊,if是分支语句,等于只进行一次比对。还有5 11 17行这不是重定义了嘛,出了作用域就释放了。
冒泡泡排序:
for(int i = 0; i < size; i++)
{
for(int j = 0 ;j < size - i - 1; j++)
{
if(arr[j] < arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}

scanf("%s %s %s",a,b,c);
scanf %s中间空格