关于gets输入次数的问题

#include
#include
int main()
{
int i,j,l,k=0,m=0,b[100][100],c[100];
char a[100][100];
scanf("%d",&j);
for(i=-1;i {
gets(a[i]);
k=0;
for(l=0;l {
if(a[i][l]='0')
{
b[i][k]=a[i][l]-'0';
k++;
}

    }
    c[m]=k;
    m++;
}
m=0;
for(i=0;i<j;i++)
{
    for(j=0;j<c[m];j++)
    {
        printf("%d",b[i][j]);
    }
}
return 0;

}
我用debug调试的时候为什么会把第一个gets跳过去?

scanf("%d",&j);后面加一个gets(),因为你输入数据给j后按了回车/n,所以你里面第一个gets()没有有效的录入

gets会读入之前遗留下来的回车符,从而跳过此次输入,在gets()前面加上fflush(stdin);清空输入缓冲区

 #include<stdio.h>
#include<string.h>
int main()
{
    int i,j,l,k=0,m=0,b[100][100],c[100];
    char a[100][100];
    scanf("%d",&j);
    for(i=-1;i<j;i++)
    {
        fflush(stdin);
        gets(a[i]);
        k=0;
        for(l=0;l<strlen(a[i]);l++)
        {
            if(a[i][l]<='9'&&a[i][l]>='0')
            {
                b[i][k]=a[i][l]-'0';
                k++;
            }

        }
        c[m]=k;
        m++;
    }
    m=0;
    for(i=0;i<j;i++)
    {
        for(j=0;j<c[m];j++)
        {
            printf("%d",b[i][j]);
        }
    }
    return 0;
}