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;
}


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