C语言中的IO函数小计

1.gets(char *str)会把所有字符读入str,换行符'\n'会读取但不会保存,最终将被舍弃,gets函数可能会造成str溢出

2.puts(char*str)把str中所有字符打印,最终会自动追加一个换行符'\n'

3.scanf("%s",s);遇到空格,换行符会终止并跳过,但这些符号仍会存留在输入队列中,如:

char bb[10]:
if(scanf("%s",bb)==1)
{
	puts(bb);
  char ch=getchar();
  putchar(ch);
}

输入:hello  a

输出为:

hello

_(一个空格)

原因:当scanf()读取“hello”后遇到空格,停止读取,把“hello”放入bb中,后面的空格仍然停留在输入 队列中,所以后面的getchar()首先读到的是这个空格而不是后面的字符"a".

4.fgets(char *buf,int cont,FILE *fp),从fp所指流中读取最多cont-1个字符存入buf中,避免了溢出问题,当遇到文件结束符EOF或读取错误时返回NULL;

fgets()读取行分为两种情况:(buf的长度大于等于cont)

1>  行的长度大于cont,则会读取cont-1个字符存入buf中,且第cont个字符自动赋为‘\0’

2>  行的长度小于cont,即buf未满就遇到换行符,则把所有字符存入buf中,且保留换行符'\n',并且在最后附加'\0'



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值