C:11---puts、gets、fgets、fputs

  • puts与gets被fputs与fgets代替使用

一、puts

功能

  • 输出一个字符串

特点

  • 会自动加上换行符

二、gets

功能

  • 用于输入一个字符串

特点

  • 普通的scanf输入字符串时遇到空格就结束读取了。gets读取时遇到空白符不会结束,遇到换行符才会结束(并且不会接受换行符)
  • 输入的字符串,并且会自动在字符串的末尾加上空白符('\0')

已经被逐渐抛弃

  • 因为gets输入字符串的时候,并不知道该字符串有多大的空间。如果输入的字符串长度多出了申请的空间,会导致缓冲区溢出,会导致程序出错
  • 有人程序就可以利用gets插入和运行一些破坏系统安全的代码
  • 因此逐渐被抛弃

案例

  • 下面的str只有10个字节的空间,但是我们输入了11个字符也可以接受(多于的字符串会自动加在str的内存空间后面,如果str后面本来有信息就会被覆盖),因此不安全

三、fgets

参数

  • 参数1:输入数据要存放的位置
  • 参数2:读入的字符的最大数量-1(如果设置为n,fgets只读取n-1个字符)
  • 参数3:读入的字符来自于哪里(如果是标准输入就填stdin)

特点①

  • 输入的字符串自动在末尾加上结束符('\0')。如果输入的字符串等于字符数组的长度并且参数2设置的大小也接受多于的字符,结束符会被加在字符串末尾的下一位(不属于字符串的地址处)

特点②

  • 遇到换行符和空白符会继续读取

特点③

  • 如果输入字符串长度(会包含\0)小于该字符数组的最大长度,就会加上换行符
  • 如果输入的字符串(会包含\0)大于等于字符数组的最大长度,就不会加上换行符

例如图1str输入了10个字符就不会再加换行,图2输入了5个字符,就会加上换行符

备注

  • 因为考虑到输入的字符串在某些情况下会加上\n和\0,所以输入时,将参数2设置为字符数组大小+1

演示案例

  • 输入的字符串后面自动加上\n\0,所以长度为6
  • \n的ASCII为10,\0的ASCII为0。所以显示10和0

  • 只获取了9个字符,并且没有换行符,末尾自动加上了\0

四、fputs

参数

  • 参数1:要输出的字符串
  • 参数2:要输出到哪里(如果是标准输出就写stdout)

特点

  • fputs不会将输出的字符串自动换行

案例

 五、gets_s

参数

  • 参数1:输入数据要存放的位置
  • 参数2:读取的字符的最大长度

特点

  • gets_s只能从标准输入中读取数据,因此不需要参数3

内容待续。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值