1>使用fgets统计给定文件的行号
#include<myhead.h>
int main(int argc, const char *argv[])
{
//判断传入的参数是否为2个
if(argc !=2)
{
printf("input file error!!!n");
printf("usage:./a.out fileName\n");
return -1;
}
//定义文件指针
FILE *fp=NULL;
if((fp=fopen(argv[1],"r"))==NULL)
{
//strerror:将错误码转换成错误信息
// printf("error:%s\n",strerror(errno));
perror("fopen error");
return -1;
}
printf("open success\n");
char buf[128]="";
int count=0;
while(1)
{
//清空容器
bzero(buf,sizeof(buf));
if(fgets(buf,sizeof(buf),fp)==NULL)
{
break;//文件读取结束
}
if(buf[strlen(buf)-1]=='\n')
{
count++;
}
}
printf("%d\n",count);
puts("");
fclose(fp);
return 0;
}
2>使用fgets,fputs完成两个文件的拷贝
#include<myhead.h>
int main(int argc, const char *argv[])
{
//判断传入文件是否为3个
if(argc!=3)
{
printf("input file error\n");
printf("usage:./a.out srcfile destfile\n");
return -1;
}
//以只读的形式打开源文件
FILE *sfp=NULL;
if((sfp=fopen(argv[1],"r"))==NULL)
{
perror("fopen error");
return -1;
}
//以只写的形式打开目标文件
FILE *dfp=NULL;
if((dfp=fopen(argv[2],"w"))==NULL)
{
perror("fopen error");
return -1;
}
//程序执行至此表示两个文件都能打开
//定义文件的搬运工
char buf[128]="";
//循环从源文件中读取数据放入到目标文件中
{
//清空容器
bzero(buf,sizeof(buf));
while(fgets(buf,sizeof(buf),sfp)!=NULL)
{
fputs(buf,dfp);
}
}
//关闭文件
fclose(sfp);
fclose(dfp);
return 0;
}