记录贴 关于二维数组赋值问题

int main(){

char a[5][10];
int i,num;
scanf("%d",&num);

for(i=0;i<num;i++)
gets(a[i]);

for(i=0;i<num;i++)
puts(a[i]);

return 0;
}

以上代码是按照某教科书打出来的,但是我在运行时始终只能对num-1行赋值。。调试后发现,第一行被跳过了。。问了大佬,可能是对num赋值时,回车键漏下来,并建议收一个回车。。。(其实我不懂怎么收回车。。/(ㄒoㄒ)/~~)但是总得按照人家的意思试试,于是我就创建了一个新的数组。。

int main(){

char a[5][10];
char ch[1];
int i,num;
scanf("%d",&num);
gets(ch);

for(i=0;i<num;i++)
gets(a[i]);

for(i=0;i<num;i++)
puts(a[i]);

return 0;
}

我创建了一个ch,因为回车会漏下来,所以就用ch来接收。。。问题算是解决了。。但是这样处理总感觉不太对劲。。但我只能做到这里了/(ㄒoㄒ)/~~。。。
/第一次修改/

今天学到了一个新函数。。fflush();可以解决这个问题。。。

int main(){

char a[5][10];
int i,num;
scanf("%d",&num);
fflush(stdin);
for(i=0;i<num;i++)
gets(a[i]);

for(i=0;i<num;i++)
puts(a[i]);

return 0;
}

fflush(stdin);可以清除输入缓存区的东西。。用了这个就可以防止回车漏下来了o( ̄▽ ̄)ブ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值