C语言对文件的读取和写入操作代码

#include <stdio.h>

#define IN

int rwFile(IN char * orgnFile, IN char * outFile)
{
	FILE *fpIN;
	FILE *fpOUT;
	fpIN = fopen(orgnFile,"rb");   // 打开原始的文件
	// 获取文件大小
	fseek(fpIN,0L,SEEK_END);  // 这一句是将文件指针fp移动到文件数据的最后一位上
	int len = ftell(fpIN);    // 获取当前文件指针到文件开头的长度大小
	fseek(fpIN,0,0);          // 将文件指针fp移动到文件开头的地方
	printf("%d\n", len);
	unsigned char in[len];
	fread(in,1,len,fpIN);     // 读取原始文件,将文件内容存到 in 中
	fclose(fpIN);

	fpOUT = fopen(outFile,"w+");      // 打开要写入的文件
	fwrite(in,sizeof(in),1,fpOUT);    // 将上面读取的 in 写入到要写入的文件中
	fclose(fpOUT);
	return 0;
}

int main()
{
	char *origin_file = "origin.txt";
	char *out_file = "out.txt";
	rwFile(origin_file, out_file);
	return 0;
}

上述代码遇到文件比较大的可能就无能为力了
**

对大文件读写:

**

#include <stdio.h>
#include<malloc.h>
#define IN
#define OUT

// 获取文件大小
int FileSize(IN char *file)
{
	FILE *fil;
	fil = fopen(file,"rb");
	fseek(fil,0L,SEEK_END);
	int filesize = ftell(fil);
	fseek(fil,0,0);
	return filesize;
}

// 读取文件
int ReadFileData(IN char *fileName, OUT char *filedata)
{
	FILE *fpIN;
	int fileSizes = FileSize(fileName);
	fpIN = fopen(fileName,"rb");
	fread(filedata,1,fileSizes,fpIN);
	fclose(fpIN);
}

// 写入文件
int WriteToFile(char *filedata, int size, OUT char *outFileName)
{
	FILE *fpOUT;
	fpOUT = fopen(outFileName,"w+");
	fwrite(filedata,1,size,fpOUT);
	fclose(fpOUT);
}

int main()
{
	char *origin_file = "file.mp4";
	int orgfilesize = FileSize(origin_file);  // 获取文件的大小
	char *file_data=malloc(orgfilesize);      // 分配文件大小的内存
	ReadFileData(origin_file, file_data);     // 读取文件
	char *outFile = "outfile.mp4";
	WriteToFile(file_data,orgfilesize,outFile);  // 写出文件

	return 0;
}

版权声明:本文为weixin_43451928原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。