https://note.youdao.com/s/XUE83bTFhttps://note.youdao.com/s/XUE83bTF
使用fgets完成求一个文件的行号,使用fgets、fputs完成两个文件的拷贝
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char *argv[])
{
//外部传参传入文件
if(argc!=2){
printf("input file error\n");
printf("usage:./a.out fileName\n");
return -1;
}
//打开两个文件,第一个为接收文件,第二个为传入文件
FILE *fp;
FILE *fp1;
if((fp1=fopen("./aaa.c","w"))==NULL){
perror("fopen error");
return -1;
}
//注意!!!用argv[]时两边不要加双引号,因为参数为指针类型
if((fp=fopen(argv[1],"r"))==NULL){
perror("fopen error"); fclose(fp1);
return -1;
}
//求传入文件长度,当提取字符串的倒数第二位为\n时,说明有换行
char buf[21];
int num=0;
while(fgets(buf,sizeof(buf),fp)!=NULL){
int len=strlen(buf)-1;
if(buf[len]=='\n'){
num++;
}
//将传入文件复制到接收文件中
fputs(buf,fp1);
}
printf("该文件有%d行\n",num);
//关闭文件
fclose(fp);
fclose(fp1);
return 0;
}
实现: