C语言实现从指定位置截取文件内容

 更新时间:2023年11月03日 10:40:25   作者:whik1194  
这篇文章主要为大家详细介绍了如何利用C语言实现从指定位置截取文件内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

源代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <sys/stat.h>
#include <sys/types.h>

#define FILE_OFFSET 10  
#define EXE_ABORT() {system("pause");return 0;}

#define FILE_NAME_I "./test.txt"
#define FILE_NAME_O "./test_out.txt" 

int main(int argc, char *argv[])
{
    uint32_t offset = FILE_OFFSET;
    char filename_i[300];
    char filename_o[300];
    FILE *fp_i;
    FILE *fp_o;
    char ch = 0;
    int ret = 0;

    struct stat stat_i;
    struct tm *tm_p;
    
    strcpy(filename_i, FILE_NAME_I);
    strcpy(filename_o, FILE_NAME_O);
    
    printf("filname_i = %s\n", filename_i);
    printf("filname_o = %s\n", filename_o);

    ret = stat(filename_i, &stat_i);
    if(ret != 0)
    {
        printf("%s: get file stat failed", filename_i);
        EXE_ABORT();
    }
    printf("get file stat success\n");
    //! 文件的大小,字节为单位
    printf("size of the file in bytes: %.02f MB (%d Bytes)\n", stat_i.st_size / 1024.0, stat_i.st_size);//    
    
    fp_i = fopen(filename_i, "rb");
    fp_o = fopen(filename_o, "wb");

    if(fp_i == NULL)
    {
        printf("%s open failed\n", filename_i);
        EXE_ABORT();
    }

    if(fp_o == NULL)
    {
        printf("%s open failed\n", filename_o);
        EXE_ABORT();
    }

    printf("offset = %d(0x%x)\n", offset, offset);
    fseek(fp_i, offset, SEEK_SET);

    while(1)
    {
        ch = fgetc(fp_i);
        if(feof(fp_i))
            break ;
        fputc(ch, fp_o);
    }

    fclose(fp_i);
    fclose(fp_o);

    printf("截取完成\n");

    system("pause");
    return 0;
}

运行结果:

输入文件test.txt内容:

1234567890ABCDEFGHIJKLMOPQRSTUVWXYS

偏移量设定为10,截取后的test_out.txt文件内容:

ABCDEFGHIJKLMOPQRSTUVWXYS

更方便的,可以argc参数,来实现通过指定输入文件路径和指定偏移量。

到此这篇关于C语言实现从指定位置截取文件内容的文章就介绍到这了,更多相关C语言截取文件内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++ 中virtual 虚函数用法深入了解

    C++ 中virtual 虚函数用法深入了解

    这篇文章主要介绍了C++ 中virtual 虚函数用法深入了解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • C++ Boost MetaStateMachine定义状态机超详细讲解

    C++ Boost MetaStateMachine定义状态机超详细讲解

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-12-12
  • C++ 面试题翻译电话号码实例代码

    C++ 面试题翻译电话号码实例代码

    这篇文章主要介绍了C++ 面试题翻译电话号码实例代码的相关资料,需要的朋友可以参考下
    2017-04-04
  • C语言实现弹跳小球项目

    C语言实现弹跳小球项目

    这篇文章主要为大家详细介绍了C语言实现弹跳小球项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C++中的作用域案例详解

    C++中的作用域案例详解

    作用域规定了标识符在代码中的可见性和可访问性,全局作用域中的标识符可以在整个程序中使用,局部作用域中的标识符只能在其所在的代码块中使用,而命名空间作用域提供了一种组织和封装代码的方式,以避免命名冲突,这篇文章主要介绍了C++中的作用域,需要的朋友可以参考下
    2024-02-02
  • C++文件的数据写入和文件的数据读取的方法实现

    C++文件的数据写入和文件的数据读取的方法实现

    本文主要介绍了C++文件的数据写入和文件的数据读取的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C++实现LeetCode(200.岛屿的数量)

    C++实现LeetCode(200.岛屿的数量)

    这篇文章主要介绍了C++实现LeetCode(200.岛屿的数量),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Qt教程之QSqlQueryModel的使用详解

    Qt教程之QSqlQueryModel的使用详解

    QSqlQueryModel是QSqlTableModel的父类,它封装了执行SELECT语句从数据库查询数据的功能,本文将为大家介绍一下QSqlQueryModel的使用,需要的可以参考一下
    2022-11-11
  • Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例

    Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例

    这篇文章主要介绍了Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例,本文代码中包含注释来讲解CCControlPotentiometer控件类的使用,需要的朋友可以参考下
    2014-09-09
  • C++中的对象指针总结

    C++中的对象指针总结

    以下是对C++中的对象指针进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10

最新评论