C语言:这样子输出的字母升序为什么前两个字母没有显示?我的代码有错吗?

输入5个小写字母按升序排序,我写出来没发现什么问题可是调试时前两个字母没显示。
这是我的代码主体片段:

char c[5];
char m;
 printf("\n请输入字母:");


 for(i=0;i<5;i++)
 {
     scanf("%c",&c[i]);
 }
 for(i=0;i<5;i++)
 {
     for(j=i+1;j<5;j++)
     {
         if(c[i]>c[j])
         {
             m=c[j];
             c[j]=c[i];
             c[i]=m;
         }
     }
 }

 printf("升序输出:");
  for(i=0;i<5;i++)
{
  printf("%c ",c[i]);
}

图片说明

很明显是你输入时加了空格:
有两种方法;
方法一: 加getchar(); 读掉空格;

     for(i=0;i<5;i++)
     {
         scanf("%c",&c[i]);
         getchar();
     }

方法二: 输入时不加空格,直接输入 edcba

冒泡排序是这样的

int i;int j;char m;
        char c[] = {'e','d','v','b','a'};
        for(i=0;  i<5;  i++) {
            for (j = i; j < 5; j++) {
                if (c[i] > c[j]) {
                    m = c[i];
                    c[i] = c[j];
                    c[j] = m;
                }
            }
        }

        for (int k = 0; k < 5; k++) {
            System.out.print(c[k]);
        }

输出 abdev 没毛病
我这里的是Java输出 C语言你试一下 %d格式输出

应该是Scanf输入的问题

#include "stdio.h"
char c[5];
char i,j,m;
int main()
{
    printf("\n请输入字母:");

    for(i=0;i<5;i++)
    {
     scanf("%c",&c[i]);
    }
    for(i=0;i<5;i++)
    {
     for(j=i+1;j<5;j++)
     {
         if(c[i]>c[j])
         {
             m=c[j];
             c[j]=c[i];
             c[i]=m;
         }
     }
    }
    printf("升序输出:");
  for(i=0;i<5;i++)
    {
    printf("%c ",c[i]);
    }
}

图片说明

没毛病呢。

简洁点就这样

#include "stdio.h"
char c[5], i,j,m;
int main()
{
    printf("\n请输入字母:");
      for(i=0;i<5;i++)
     scanf("%c",&c[i]);
    for(i=0;i<5;i++)
    {
     for(j=i+1;j<5;j++)
     {
         if(c[i]>c[j])
         {
             m=c[j];
             c[j]=c[i];
             c[i]=m;
         }
     }
    }
    printf("升序输出:");
    for(i=0;i<5;i++)
       printf("%c ",c[i]);
}

谢谢各位,我已经解决问题了,的确是scanf输入时加了空格