问题描述
- 关于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;
}
时间: 2024-10-31 14:36:12