何时要加getchar()的问题

例如: scanf("%d",&n); //输入 10回车
getchar(); //吸收回车 注释掉getchar()后
gets(str); //输入abcde后,str="abcde" str中只有一个回车
而 scanf("%d",&n);
scanf("%s",str)//不会吸收回车
请问为什么?gets与scanf到底有什么区别?
网友回复:gets函数在输入字符串时,可以输入空格,空格做为字符串的一部分输入。而scanf函数不能输入空格,即碰到字空格时,认为字符串输入结束。
网友回复:char *gets(char *buf);
char *buf是你指定的缓存
gets是一个不推荐使用的函数,问题是调用者在使用gets时不能指定缓存的长度,这样可能造成缓存越界(若该行长于缓存长度)
scanf( )函数在读入字符串时不认空格!也就是说用scanf( )读取“hi hello”只能得到空格之前的“hi”,gets( )则可以读空格。
scanf在从stdin流读取输入时,碰到回车键即'/n',则停止,'/n'仍留在输入流中,且忽略空格,使用时,假如有多个输入函数被调用,需注重对多余回车的读取,一般使用getchar();
gets接收输入时,不对接收变量进行检查,hui轻易产生内存溢出.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值