一、思维导图
二、习题
#include <myhead.h>
int main(int argc, const char *argv[])
{
FILE *fp=NULL;
FILE *fq=NULL;
pid_t pid=fork();
if(pid>0)
{
//在父进程中打开复制文件
if((fp=fopen("./text.txt","r"))==NULL)
{
perror("fopen error");
return -1;
}
//在父进程中打开目标文件
if((fq=fopen("./fuzhi.txt","w"))==NULL)
{
perror("fopen error");
return -1;
}
//计算文件大小
fseek(fp,0,SEEK_END);
size_t size=ftell(fp);
fseek(fp,0,SEEK_SET);
char c;
//读取复制文件内容
while((c=fgetc(fp))>0)
{
//将数据写入目标文件
fputc(c,fq);
if(ftell(fp)==size/2)
{
break;
}
}
fclose(fp);
fclose(fq);
}
else if(pid==0)
{
//在子进程中打开复制文件
if((fp=fopen("./text.txt","r"))==NULL)
{
perror("fopen error");
return -1;
}
fseek(fp,0,SEEK_END);
size_t size=ftell(fp);
int z=fseek(fp,size/2,SEEK_SET);
if(z!=0)
{
perror("错误信息");
return -1;
}
//在子进程中打开目标文件
if((fq=fopen("./fuzhi.txt","a"))==NULL)
{
perror("fopen error");
return -1;
}
char d;
//从文件中间位置读取数据,存入到数组中
while((d=fgetc(fp))>0)
{
//将数据写入目标文件
fputc(d,fq);
}
fclose(fp);
fclose(fq);
exit(0);
}
wait(NULL);
return 0;
}
实验现象