字符串的基本操作问题,没有报错,请问逻辑问题

【问题描述】

输入若干个字符串(每个字符串的长度不超过30个字符,字符串总数不超过30),和一个英文字符ch。 要求: - 删除每个字符串中的字符ch(区分大小写),得到新的字符串 - 将新的字符串按照字典逆序排序后输出

【输入形式】

第一行输入英文字符ch

每一行输入一个字符串

最后一行单独输入特殊字符@做为结束标志

【输出形式】

删除ch的新字符串按字典逆序输出

每行输出一个字符串

【样例输入】

e
shangejiao
fudean
teongji
shangcai
@
【样例输出】

tongji
shangjiao
shangcai
fudan
我写的代码:

#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    char a[10][30], n, c[10][30];
    int i, j, temp, m1 = 0, m2 = 0;
    scanf("%c", &n);
    for (i = 0; i < 10; i++)
        scanf("%s", a[i]);
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 30; j++)
        {
            if (a[i][j]!=n)
            {
                c[m1++][m2++] = a[i][j];
            }
        }
    }
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 30; j++)
        {
            if (c[i][j] < c[i][i + 1])
            {
                temp = c[i][j + i];
                c[i][i + 1] = c[i][j];
                c[i][j] = temp;
            }
        }
        if (c[i][j] == '@')
            break;
    }
    for (i = 0; i < 10; i++)
    {
        for (j = 0; c[i][j] != '\0'; j++)
        {
            printf("%c", c[i][j]);
        }
        printf("\n");
        if (c[i][j] == '@')
            break;
    }
    return 0;
}


输出错误

img