判断文件结束有三种方式:
a) char p[1024];
while(fgets(p, 1024, src) != NULL)
fputs(p, dest);
b) intc;
while((c= fgetc(src)) != EOF)
fputs(c, dest);
c)while((n= fread(s, 1, 20, src)) != 0)
{
fwrite(s, 1, n, dest);
}
我们利用第三种方式写一个文件复制程序。
程序如下:
/*************************************************************************
@Author: wanghao
@Created Time : Sun 20 May 2018 04:32:36 AMPDT
@File Name: cp.c
@Description:
************************************************************************/
#include<stdio.h>
#defineMAXSIZE 32
intmain(int argc, const char *argv[])
{
int num;
FILE *fp1;
FILE *fp2;
char buf[MAXSIZE];
if(argc < 3)
{
printf("usage: <src><dest>\n");
return -1;
}
fp1 = fopen(argv[1], "r");
if(fp1 == NULL)
{
printf("Open %sfail\n",argv[1]);
return -2;
}
fp2 = fopen(argv[2], "w");
if(fp2 == NULL)
{
printf("Open %sfail\n",argv[2]);
return -3;
}
while((num = fread((char *)buf, 1,MAXSIZE, fp1)) != 0)
{
printf("num = %d, buf =%s\n", num,buf);
fwrite((char *)buf, sizeof(char),num, fp2);
}
return 0;
}