简单总结:输入输出函数(C语言)

1、输出函数

putchar:打印一个字符
puts:打印一个字符串
printf::格式控制打印输出(万能) 返回成功打印的个数

2、输入函数

getchar:输入一个字符
gets:输入一个字符串
scanf:格式打印输入 返回输入成功的个数

经常使用来实现终端无限输入数据,只需要加判断:以scanf为例
while(~scanf()) {
}
while的条件还可以替换 scanf()= -1scanf()= EOF
其他一样

区别:

puts():输出字符串并自动换行,该函数只能输出字符串。
printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据。
gets():直接输入字符串,并且只能输入字符串。
scanf():通过格式控制符%s输入字符串。除了字符串,scanf() 还能输入其他类型的数据。

scanf() 和 gets() 是有区别的:
scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串

常会出现的BUG

1:scanf("",&),其中的&要注意
寻常变量:必须加&,表示地址,相当于传出参数
数组与指针变量:只需要加变量名,变量名即代表其地址
2:连续使用gets,或者使用了scanf后再使用gets
例如

int N;
int str[20];
scanf("%d",&N);
gets(str);

结果:输入字符串显示不出来
原因:scanf(""),以回车输入结束的标志,但不接受回车,回车放入输入缓冲区
紧接着gets()读入,不同的是gets接受了回车,而gets也是以回车结束,所以gets在没用读入任何字符的情况下结束了,这就是BUG的所在
解决方法:scanf后用getchar() 来吃掉回车

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值