Linux系统编程 --- day2

目录

1. feof / ferror

2. fseek

3. ftell

4. 缓冲

5. 文件io

6. 操作函数

6.1 open

6.2 write

6.3 read

6.4 lseek

7. 练习


1. feof / ferror

feof ()  函数判断 : int feof(FILE *stream);
功能:判断当前参数stream的文件流指针是否到达文件结尾,如果到达文件结尾则返回真,否则返回假
注意:该操作一定要在一次IO操作之后判断。
参数:stream 要判断结尾的文件流对象
         返回值:成功到达结尾是 真 , 否则 是假

ferror : 检测一个流是否出错

if (feof(fp)) {
printf("到达文件末尾!\n");
} else {
printf("未到达文件末尾!\n");
}

if (ferror(fp)) {
printf("出错!\n");
clearerr(fp);
} else {
printf("未出错!\n");
}

2. fseek

int fseek(FILE *stream, long offset, int whence);
功能:将stream流文件中的文件指针从whence位置开始,偏移offset字节的长度。
参数:stream  要移动文件指针的目标文件流对象。
注意:不支持设备文件,一般用于普通文件。
          offset  要在文件内偏移的距离,单位字节。
          如果值为整数,则向文件末尾偏移
          如果值为负数,则向文件开头偏移
          whence  偏移的起始位置,由系统定义的三个宏开始。
           SEEK_SET  文件的开头位置 
          SEEK_CUR  文件的当前位置
          SEEK_END  文件的末尾位置
返回值:
成功: 返回 0
失败:  -1;
如果从文件的指定位置向后偏移过程中已经超过了文件的当前末尾位置,则会自动以'\0'来填充文件内容,从而形成一种被称为"空洞文件" 的特殊文件。

#include <stdio.h>

int main(int argc, char *argv[])
{
    
    FILE* fp = fopen("./01fopen.c","r");
    if(NULL == fp)
    {
        printf("fopen error\n");
        return 1;
    }

    int ret = fseek(fp,10,SEEK_SET);
    if(-1 == ret)
    {
        printf("fseek error\n");
        return 1;
    }

    char buf[512]={0};
    fgets(buf,sizeof(buf),fp);
    printf("buf is %s\n",buf);

    fclose(fp);


    return 0;
}

3. ftell

long ftell(FILE *stream);rewind(fp);
功能:获取当前文件流指针的具体位置,一般以文件开头到当前指针的字节数为返回值。
参数:stream 要返回指针距离的文件流对象
返回值:成功 获取到的距离长度,单位是字节;失败 -1;

#include <stdio.h>

int main(int argc, char *argv[])
{
    
    FILE* fp = fopen("./2.png","r");
    if(NULL == fp)
    {
        r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值