#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:实现文件打开创建复制关闭
最新推荐文章于 2021-10-15 06:07:18 发布