C語(yǔ)言實(shí)現(xiàn)從指定位置截取文件內(nèi)容
源代碼:
#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");
//! 文件的大小,字節(jié)為單位
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;
}運(yùn)行結(jié)果:
輸入文件test.txt內(nèi)容:
1234567890ABCDEFGHIJKLMOPQRSTUVWXYS
偏移量設(shè)定為10,截取后的test_out.txt文件內(nèi)容:
ABCDEFGHIJKLMOPQRSTUVWXYS
更方便的,可以argc參數(shù),來(lái)實(shí)現(xiàn)通過(guò)指定輸入文件路徑和指定偏移量。
到此這篇關(guān)于C語(yǔ)言實(shí)現(xiàn)從指定位置截取文件內(nèi)容的文章就介紹到這了,更多相關(guān)C語(yǔ)言截取文件內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ 中l(wèi)ambda表達(dá)式的編譯器實(shí)現(xiàn)原理
C++ 11加入了一個(gè)非常重要的特性——Lambda表達(dá)式。這篇文章主要介紹了C++ 中l(wèi)ambda表達(dá)式的編譯器實(shí)現(xiàn)原理,需要的朋友可以參考下2017-02-02
C語(yǔ)言實(shí)現(xiàn)考試報(bào)名管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)考試報(bào)名管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
C++ 中的 mutable關(guān)鍵字作用與使用場(chǎng)景分析(最新推薦)
C++中的mutable關(guān)鍵字允許在常量成員函數(shù)中修改特定成員變量,主要用于緩存機(jī)制、延遲計(jì)算和多線程同步等場(chǎng)景,它在設(shè)計(jì)中提供靈活性,但使用時(shí)需謹(jǐn)慎,本文介紹C++ 中的 mutable關(guān)鍵字作用與使用場(chǎng)景分析,感興趣的朋友一起看看吧2025-02-02
C語(yǔ)言中的內(nèi)存管理之掌握動(dòng)態(tài)分配的技巧(最新推薦)
在C語(yǔ)言編程中,內(nèi)存管理是一項(xiàng)至關(guān)重要的技能,它直接關(guān)系到程序的性能和穩(wěn)定性,特別是在處理大型數(shù)據(jù)集或需要靈活內(nèi)存布局的場(chǎng)景下,本文將深入探討C語(yǔ)言中的動(dòng)態(tài)內(nèi)存分配技巧,幫助開發(fā)者更好地掌握這一核心技能2025-03-03
牛頓迭代法求多項(xiàng)式在1.5附近的值2*x的3次冪--4x平方+3*x-6=0的實(shí)現(xiàn)代碼
以下代碼是使用了牛頓迭代法求多項(xiàng)式在1.5附近的值 2*x的3次冪 - 4x的平方 + 3*x -6=0的實(shí)例。需要的朋友參考下吧2013-05-05
C++實(shí)現(xiàn)簡(jiǎn)單職工信息管理系統(tǒng)
本文給大家分享的是使用C++實(shí)現(xiàn)簡(jiǎn)單的職工信息管理系統(tǒng)的代碼,本系統(tǒng)采用了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,所有的方法均以類為基礎(chǔ),感興趣的小伙伴們可以參考一下2015-08-08

