黑马程序员---C语言中字符串的输入

如果想把一个字符串读到程序中,必须首先预留存储字符串的空间,然后使用输入函数来获取这个字符串。

C库提供了三个读取字符串的函数:gets()和fgets()和scanf()


最常用的是gets().读字符串直到遇到一个换行字符('\n') ,按回车键可以产生这个字符.它读取换行符之前(不包括换行符)的所有字符,在这些字符后添加一个空字符('\0') ,然后把这个字符串交给调用它的程序.

gets()的一个不足就是它不检查预留存储区是否能够容纳实际输入的数据.多出来的字符简单地溢出到相邻的内存区.fgets()函数改进了这个问题,它让您指定最大读入字符数.由于gets()不检查目标数组是否能够容纳输入,所以很不安全.因此对于重要的编程,应该使用fgets()而不是gets()

fgets()和gets()有三方面不同:

它需要第二个参数来说明最大读入字符数.如果这个参数值为n, fgets()就会读取最多n-1个字符或者读完一个换行符为止,由这二者中最先满足的那个来结束输入.

如果fgets()读取到换行符,就会把它存到字符串里,而不是像gets()那样丢弃它.

它还需要第三个参数来说明读哪一个文件.从键盘上读数据时,可以使用stdin(代表standard input)作为该参数.


scanf()使用两种方法决定输入结束.但无论哪种方法,字符串都是以遇到的第一个非空白字符开始.如果使用%s格式,字符串读到(但不包括)下一个空白字符(比如空格、制表符或换行符)。如果指定了字段宽度,比如%10s, scanf()就会读入10个字符或直到遇到第一个空白字符,由二者中最先满足的那一个终止输入.

scanf()和gets()主要的差别:

主要的差别在于它们如何决定字符串何时结束.scanf()是基于获取单词而不是获取字符串 ;而gets()函数会读取所有的字符,直到遇到第一个换行符为止.



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值