运行结果如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>
int copy_file(FILE *src_file,FILE *dest_file)
{
if(src_file == NULL){//判断头指针存在
printf("失败\n");
return -1;
}
if(dest_file == NULL){
printf("失败\n");
return -1;
}
char buff[1024] = {0};//用于保存每行的字符串
int line=0; //行长
char *ch;// 用于保存缓冲区的首地址
while((ch = fgets(buff,sizeof(buff),src_file)) != NULL){
if(NULL == buff){
break;
}
if(buff[strlen(buff)-1] == '\n'){
line++;
}
fputs(ch,dest_file);
}
return line;
}
int main(int argc, const char *argv[])
{
FILE *src_file ;//源文件
FILE *dest_file ;//目的文件
int line=0; //行长
/* if(argc != 3){
fprintf(stderr,"sgae:%s filename", argv[0]);
return -1;
}*/
//只读打开文件一
src_file = fopen(argv[1],"r");
//只写打开文件二
dest_file = fopen(argv[2],"w");
if(dest_file == NULL){
printf("1\n");
}
//功能
line = copy_file(src_file,dest_file);//复制文件并返回行长
printf("行长为:%d\n", line);
//关闭文件
fclose(src_file);
fclose(dest_file);
return 0;
}