fgets的认识

本文详细介绍了C语言中的fgets函数,解释了如何使用此函数从文件流中读取特定数量的字符,并通过实例说明了不同参数设置对读取结果的影响。

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

fgets

SYNOPSIS
       #include <stdio.h>
       char *fgets(char *s, int size, FILE *stream);

从stream中读取字节到s中,字节多少受到size的限制;

char * s    ->  存储位置
int size    ->  复制size个字节(*注*:这里总会在末尾留一个字节给'\0',
                以表示一个字符串结束,
                这是整套C语言规范框架下的规则,记住就行。
                所以如果你想复制size'Y'字节到另一个地方,
                实际上你只复制了size-1个,
                还有一个'Y'在stream中躺着,等待你的再一次读取)
FILE * stream   ->  文件结构体指针,将要读取的文件流(这个不懂赶紧百度)

举个栗子
如果一个文件的当前位置的文本如下

Love, I Have
Since you can do it.

如果用 fgets(str1,6,file1); 去读取
则执行后str1 = "Love," ,读取了6-1=5个字符
这个时候再执行fgets(str1,20,file1)则执行后str1 = " I Have\n"

而如果fgets(str1,23,file1);
则执行str1="Love ,I Have",读取了一行(包括行尾的’\n’,并自动加上字符串结束符’\0’)
当前文件位置移至下一行,虽然23大于当前行上字符总和,可是不会继续到下一行。而下一次调用fgets()继续读取的时候是从下一行开始读。(这就是为什么文件操作中还专门有一个'r'标准位,来表示二进制打开文件,如果你用二进制打开文件,就不会这样换行就不读了)。
(注意:这个栗子是从百度偷来的^_^)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值