C语言 文件I/O:实现文件打开创建复制关闭

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int size,num;

	FILE *stream;

	FILE *newStream;

	char filename[100];
	char filename1[100];

	void * buff = NULL; //初始化文件缓存

	printf("请输入当前目录下要打开的文件:");

	gets(filename);

	if((stream = fopen(filename,"rb"))<=0)
	{
		perror("打开文件失败");
		getchar();//起到暂停看输出的效果
		return -1;
	}
	else
	{
		printf("打开文件成功! %p\n",stream);
	}

	fseek(stream,0,SEEK_END);//将文件流位置设置到最后的偏移值

	if((size = ftell(stream))<0)
	{
		printf("文件格式不正确!\n");
		getchar();//起到暂停看输出的效果
		return -1;
	}

	printf("文件大小:%d 字节\n===============================\n",size);

	//=================创建一个新文件接收流数据============================
	
	printf("请输入当前目录下要创建的文件:");

	gets(filename1);

	if((newStream = fopen(filename1,"wb+"))<=0)
	{
		perror("创建文件失败");
		getchar();//起到暂停看输出的效果
		return -1;
	}
	else
	{
		printf("创建文件成功! %d\n===============================\n",stream);
	}

	rewind(stream);	

	//====================根据文件大小设置文件缓存============================

	if((buff = malloc(size))==NULL)
	{
		perror("创建文件缓存失败");
		getchar();//起到暂停看输出的效果
		return -1;
	}

	//======================文件流读取数据操作================================
	
	num = fread(buff,1,size,stream);

	if(num<size)
	{
		printf("本次读取的数据不完整!\n");
	}
	else
	{
		printf("本次读取的数据完成!\n");
	}

	//----------------------文件流写入文件操作-----------------------------------
	
	num = fwrite(buff,1,size,newStream);
	
	if(num<size)
	{
		printf("本次写入的数据不完整!\n");
	}
	else
	{
		printf("本次写入的数据完成!\n");
	}
	printf("===============================\n");
	//==================关闭文件流、释放文件缓存=================================

	if(fclose(stream)==0)
	{
		printf("文件流已关闭!\n");
	}
	else
	{	
		printf("文件流关闭失败!\n");
	}
	free(buff);
	buff = NULL;
	printf("文件缓存已释放!\n");

	getchar();//起到暂停看输出的效果
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章