#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;
}