C语言gets()和scanf()函数

来自百度经验(原文区别2不正确,已更正):

C语言中scanf()和用gets()接收字符串的区别_百度经验
http://jingyan.baidu.com/article/ed15cb1b59a87d1be2698172.html

区别1:scanf()可以同时接受多个字符串,而gets()一次只能接受一个字符串。

 例如:scanf("%s %s",a,b);就可以同时给a和b两个字符串指针赋值,getS就不可以;

区别2:scanf()一定条件下能接受带空格的字符串,而gets()能接受带空格的字符串。

scanf("%c",a);函数遇到空格可以识别,但是"%s"格式不可以识别空格和换行,空格或者换行表示字符串输入的结束;

gets()函数是可以识别空格的;





区别3:scanf()不能接受长度为0的字符串,会自动忽略开头的所有空格,并且以空格、换行符、回车结束输入。而gets()能接受长度为0的字符串,不会自动忽略开头的所有空格或回车,并以回车结束。

补充:scanf()完一个整数后,如果要用gets(),需要先用getchar()接受整数后的换行符

结论:如果要读入一个带空格符的字符串时用gets()比较方便, 如非要用scanf(),必须手动给字符串的末尾赋值为'\0',如果不带空格,那么gets()和scanf()效果是一样的。

另外:puts函数比起printf使用%s,要多输出一个换行符;scanf函数里面,如果%s格式对应的是一个char[]的变量时,可以加&也可以不加

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值