5.7 标准I/O库_每次一行I/O

本文详细介绍了文件处理中常用的读写函数,如fgets、gets、fputs和puts等。解释了这些函数的工作原理、参数含义及返回值,并对比了fgets与gets、fputs与puts之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    下面两个函数提供每次输入一行的功能。

  • #include <stdio.h>
  • char *fgets(char *restrict buf, int n, FILE *restrict fp);
  • char *gets(char *buf);

返回值:成功返回buf,已到达文件结尾或出错则返回NULL

这两个函数都指定了缓冲区的地址,读入的行将送入其中。gets从标准输入读,而fgets则从指定的流读。

    对于fgets,必须指定缓冲区的长度n。此函数一直读到下一个换行符为止,但是不超过n-1个字符,读入的字符被送入缓冲区。该缓冲区以null字符结尾。如若改行(包括最后一个换行符)的字符数超过n-1,则fgets只返回一个不完整的行,但是,缓冲区总是以null字符结尾。对fgets的下一次调用会继续读改行。

    使用gets时不能指定缓冲区的长度。这样就可能造成缓冲区溢出。gets与fgets的另一个区别是,gets并不将换行符存入缓冲区中。

    fputs和puts提供每次输出一行的功能。

  • #include <stdio.h>
  • int fputs(const char *restrict str, FILE *restrict fp);
  • int puts(const char *str);

返回值:成功返回非负值,出错返回EOF

    函数fputs将一个以null符终止的字符串写到指定的流,尾端的终止符不写出。

    puts将一个一null符终止的字符串写到标准输出,终止符不写出。但是,puts然后又将一个换行符写到标准输出。

    如果总是使用fgets和fputs,那么就会熟知在每行终止处我们必须自己处理换行符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值