#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;
}
C語言 文件I/O:實現文件打開創建複製關閉
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.