今天本来是想模仿cp来写一段复制文件的代码,如下
//这段代码可以复制可执行文件,但是不能复制文本
#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<sys/times.h>
#include<time.h>
#define LINE_MAX 1024
int main(int argc,char** argv){
if(argc<3){
perror("parameters not avaliable");
exit(EXIT_FAILURE);
}
struct tms tmp;
clock_t head,end;
head=times(&tmp);
FILE* file1=fopen(argv[1],"r");
FILE* file2=fopen(argv[2],"a+");
void* ptr=malloc(LINE_MAX);
while(1==fread(ptr,LINE_MAX,1,file1))
fwrite(ptr,LINE_MAX,1,file2);
end=times(&tmp);
printf("%lf ms\n",((double)(end-head)/CLOCKS_PER_SEC)*1000);
exit(EXIT_SUCCESS);
}
//这段代码可以复制文本,但是不能复制可执行文件
#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<sys/times.h>
#include<time.h>
#define LINE_MAX 1024
int main(int argc,char** argv){
if(argc<3){
perror("parameters not avaliable");
exit(EXIT_FAILURE);
}
struct tms tmp;
clock_t head,end;
head=times(&tmp);
FILE* file1=fopen(argv[1],"r");
FILE* file2=fopen(argv[2],"a+");
char* ptr=malloc(LINE_MAX);
while(NULL!=fgets(ptr,LINE_MAX,file1))
fputs(ptr,file2);
end=times(&tmp);
printf("%lf ms\n",((double)(end-head)/CLOCKS_PER_SEC)*1000);
exit(EXIT_SUCCESS);
}
那么问题出现在哪里呢 经gdb发现第一份代码在fread函数里面报了错
no such file and directory,但是文件指针并不是NULL,写在这里,留待后续