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语言截取文件内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Matlab实现黑洞优化算法的示例代码

    Matlab实现黑洞优化算法的示例代码

    根据黑洞现象原理首次提出BH 算法,它在传统PSO基础上引入了新的机制,有效地提高了收敛速度并防止了陷入局部极值的情况发生.本文将用Matlab实现这一算法,需要的可以参考一下
    2022-06-06
  • C语言应用领域分析

    C语言应用领域分析

    在本篇文章里小编给各位分享的是关于C语言应用领域分析内容,有兴趣的朋友们可以学习下。
    2020-03-03
  • Java C++算法题解leetcode1592重新排列单词间的空格

    Java C++算法题解leetcode1592重新排列单词间的空格

    这篇文章主要为大家介绍了Java C++算法题解leetcode1592重新排列单词间的空格示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 快速了解Boost.Asio 的多线程模型

    快速了解Boost.Asio 的多线程模型

    这篇文章主要介绍了Boost.Asio 的多线程模型的相关知识,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C++11 并发指南之std::thread 详解

    C++11 并发指南之std::thread 详解

    这篇文章主要介绍了C++11 并发指南之std::thread 详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • C语言中的typedef、#define、const特点和用法介绍

    C语言中的typedef、#define、const特点和用法介绍

    在C 语言中,typedef、#define和const都用于定义常量和简化代码,但它们的用途和工作方式有显著区别,下面详细讲解这三者的特点和用法,感兴趣的朋友一起看看吧
    2024-08-08
  • C++可视化角色按键移动控制的实现

    C++可视化角色按键移动控制的实现

    这篇文章主要介绍了C++可视化角色按键移动控制的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-03-03
  • C语言 while for do while循环体详解用法

    C语言 while for do while循环体详解用法

    在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件
    2021-10-10
  • C++中priority_queue的使用与模拟实现

    C++中priority_queue的使用与模拟实现

    本文主要介绍了C++中priority_queue的使用与模拟实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • c++实现通用参数解析类示例

    c++实现通用参数解析类示例

    使用命令行执行程序的时候在程序后可跟多个参数列表,而main函数的argc和argv分别存储了相关的参数个数和参数内容,而循环输入相关的时候就需要用户自己来解析相关参数。以下代码用c++的方式实现了相关解析的封装,使用起来非常方便
    2014-03-03

最新评论