• scanf("%s", str) 不能读取空白字符,遇到第一个空白字符就停止读取。

  • gets(str) 读取整行输入,直至遇到换行符,丢弃换行符储存其余字符,并在末尾添加 \0。与 puts(str)配合使用,puts()用于显示字符串,并在末尾添加换行符。

因为 gets(str) 函数仅有一个参数,因此无法检测是否会溢出,因此出现了 fgets() 函数。

  • fgets(str, n, stdin) 从键盘输入最多 n-1 个字符至 str 数组中。此函数还需注意:

    1. 第一个参数为目标地址,第二个参数为可读入的最大字符数目,如果为 n,则最大读入 n-1 个字符,或者读到换行符停止。
    2. 第三个参数为文件指针,此函数同样也可用于文件I/O,只需使第三个参数为相应的文件指针,此处从键盘读取,故使用标准输入 stdin。
    3. fgets() 读到换行符,则将其一同存储,不同于 gets()函数。
    4. fgets()fputs() 函数配对使用,因为 fgets() 读到换行符不丢弃,因此 fputs() 输出时不在末尾添加换行符。因此,fgets()fputs() 配合可以理解为读到什么,就存什么;存了什么,就显示什么
    5. 如果此函数读取发生错误或读至文件末尾,会返回 NULL。
  • puts(str) 显示 str 数组中的字符,直至遇到空字符停止输出,并在末尾添加一个换行符。

  • fputs(str, stdout) 显示 str 中的字符。其第二个参数是文件指针,同样也可以使用具体的文件指针将字符串写入文件中。


配对使用:

while(gets(str))
puts(str); 或者 while(fgets(str, LEN, stdin))
fputs(str, stdout);

C语言字符串输入输出函数(gets()函数、puts()函数、fgets()函数、fputs()函数)的更多相关文章

  1. C语言 · 字符串输入输出函数

    算法提高 3-2字符串输入输出函数   时间限制:1.0s   内存限制:512.0MB      描述 编写函数GetReal和GetString,在main函数中分别调用这两个函数.在读入一个实数 ...

  2. C字符串输入输出函数

    下面就几个常用的字符串输入输出函数做个小小的总结TAT 使用时添加头文件:#include<stdio.h>. scanf("格式控制字符串",变量地址列表):(pri ...

  3. Java实现 蓝桥杯VIP 算法提高 3-2字符串输入输出函数

    算法提高 3-2字符串输入输出函数 时间限制:1.0s 内存限制:512.0MB 描述 编写函数GetReal和GetString,在main函数中分别调用这两个函数.在读入一个实数和一个字符串后,将 ...

  4. C语言学习<输入输出函数,函数的调用>

    #include <stdio.h> /* 输入输出函数的学习 函数的调用 2017.05.25 soulsjie */ //输入连个数字求最大值 void main(){ int Max ...

  5. c语言的输入输出函数

    参考文章: http://blog.sina.com.cn/s/blog_784f40b80100psg9.html C语言输入输出函数分为两类: 1.格式化输入输出函数 2.非格式化输入输出 --- ...

  6. C语言中输入输出函数

    1.1.1 格式化输入输出函数Turbo C2.0 标准库提供了两个控制台格式化输入. 输出函数printf() 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据.pri ...

  7. C语言格式化输入输出函数

    一:格式输出函数printf() 1.调用形式一般为:printf("格式化控制字符串",输出表列): 2.格式化控制字符串用于指定输出格式,它有三种形式: 1.格式说明符:规定了 ...

  8. C++中的字符串输入输出函数详解

    常见的输入问题: 1.直接用cin输入(当然可以使用cout直接输出): 1)string s; cin >> s; //只接收回车键和空格前面所输入的字符!!!!! 一旦输入空格,cin ...

  9. fgets和fputs函数

    1 函数输入 下面两个函数提供每次输入一行的功能. #include <stdio.h> char *fgets( char *restrict buf, int n, FILE *res ...

随机推荐

  1. Arrays.sort(arr)是什么排序

    在学习过程中观察到Arrays.sort(arr)算法可以直接进行排序,但不清楚底层的代码逻辑是什么样子,记得自己之前在面试题里面也有面试官问这个问题,只能说研究之后发现还是比较复杂的,并不是网上说的 ...

  2. 3. hive 常用函数

    常用日期函数 1.返回当前或指定时间的时间戳 select unix_timestamp();select unix_timestamp("2020-10-28",'yyyy-MM ...

  3. 使用 TensorFlow 构建机器学习项目中文版&#183;翻译完成

    原文:Building Machine Learning Projects with TensorFlow 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原 ...

  4. new Date时间格式转换方法

    平时经常会使用到时间转换,组件库已经有很多组件可以自动生成时间类型了,但是底层的封装方法还是得有 获取当前时间 new Date()  或者自己拥有一个毫秒时间 方法如下 /** * title: 时 ...

  5. Git .gitignore 不起作用的解决办法

    解决方法的原理:.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 解决方案:git rm -r --cached . ...

  6. ObjectInputStream java.io.StreamCorruptedException: invalid type code: AC问题解决

    感谢原文作者:攻城狮_无名 原文链接:https://blog.csdn.net/mingyang_2016/article/details/75208117 问题描述: 每次向一个文件中序列化对象时 ...

  7. 消息队列 - mac上安装RabbitMq (转)

    什么是RabbitMQ? RabbitMQ是由Erlang语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件(也称为面向消息的中间件).支持WIndows.Linux.MAC OS 操作系 ...

  8. Cell的重用原理

    iOS设备的内存有限,如果用UITableView显示成千上万条数据,就需要成千上万个UITableViewCell对象的话,那将会耗尽iOS设备的内存.要解决该问题,需要重用UITableViewC ...

  9. 企业级Docker容器镜像仓库Harbor的搭建

    Harbor简述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理 ...

  10. Java基础复习(六)

    1. 接口的实现类中的实现接口中的抽象方法的方法必须为public,为什么? 接口中所有的方法与变量都默认是 public 的,在接口中可以不写出来.但在实现类中,如果不明写的话,就变成了 frien ...