1.使用fgets统计一个文件的行号
//使用fgets统计一个文件的行号#include <string.h>
#include <stdlib.h>
#include <stdio.h>int main(int argc, const char *argv[])
{if(argc<2) //获取文件名{printf("input error\n!");printf("usage: ./a.out file\n");}FILE *fp;if( (fp=fopen(argv[1], "r"))==NULL ) //打开文件{perror("fopen");return -1;}int count=0;char buf[16] = ""; //定义fgets一次获取字符串while(1){if(fgets(buf, sizeof(buf), fp)==NULL) //判断是否到文件尾部了{break;}//printf("buf=%s", buf);for(int i=0; buf[i]!='\0'; i++) //搜索\n{if(buf[i]=='\n'){count++;//printf("count=%d\n", count);break;}}}printf("total lines=%d\n", count);fclose(fp); //关闭文件return 0;
}
2.使用fgets\fputs拷贝两个文件
//使用fgets\fputs拷贝两个文件#include <string.h>
#include <stdlib.h>
#include <stdio.h>int main(int argc, const char *argv[])
{if(argc!=3)//获取目标,原文件名{printf("input files error\nusage: ./a.out dest src\n");return -1;}FILE *src;FILE *dest;if( (src = fopen(argv[1], "r"))==NULL ) //判断文件打开是否成功{perror("src fopen");return -1;}if( (dest = fopen(argv[2], "w"))==NULL ) //判断文件打开是否成功{perror("dest fopen");return -1;}char buf[4] = ""; //拷贝读取和写入的缓存while( fgets(buf, sizeof(buf), src) != NULL) //读取+判断文件是否到尾部{fputs(buf, dest);//写入目标文件}fclose(src); //关闭文件fclose(dest);puts("copy successed!\n");return 0;}
3. 思维导图