比较ascii值,函数输出第一次正常,第二,三次开始错误,第四次正常,一直循环

#include<stdio.h>
void max(char a,char b,char c)
{
char t;
if(a<b)
{t=a;a=b;b=t;}
if(a<c)
{t=a;a=c;c=t;}
if(b<c)
{t=b;b=c;c=t;}
printf("%c %c %c",c,b,a);
}
int main()
{
char a,b,c;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
max(a,b,c);
}
return 0;
}

因为回车字符在标准数据流中没有被及时读走。

#include<stdio.h>
void max(char a,char b,char c)
{
    char t;
    if(a<b)
    {t=a;a=b;b=t;}
    if(a<c)
    {t=a;a=c;c=t;}
    if(b<c)
    {t=b;b=c;c=t;}
    printf("%c %c %c\n",c,b,a);
}
int main()
{
    char a,b,c;
    while(scanf("%c %c %c",&a,&b,&c)!=EOF)
    {   
        getchar();  //读取回车
        max(a,b,c);
    }   
    return 0;
}