目录
使用fgets完成求一个文件的行号
代码
#include<stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
if(argc!=2){
printf("Too few arguments!\n");
printf("usage:./a.out fileName\n");
return -1;
}
//定义文件类型指针
FILE *fp;
//将文件指针指向需要打开的文件,并且是只读
if((fp = fopen(argv[1],"r"))==NULL){
perror("fopen error");
return -1;
}
//判断换行符号,已知遇到换行,fgets就吸收\n并且直接往后面加\0停止,所以换行一定在字符长度所在位置的前一个位置,因为换行也是占一个字符位置
char buf[6] = {0};
int count = 0;
while((fgets(buf,6,fp))!=NULL){
if(10==buf[strlen(buf)-1]){
count++;
}
}
fclose(fp);
printf("您所输入的文件其内部有%d行\n",count);
return 0;
}
运行结果
使用fgets、fputs完成两个文件的拷贝
代码
#include<stdio.h>
int main(int argc, const char *argv[])
{
//判断条件
if(3!=argc){
printf("Too few arguments\n");
printf("usage:./a.out srcFileName dstFileName\n");
return -1;
}
//定义文件指针打开要被复制的文件,并且该文件设为只读
FILE *srcfp;
if(NULL==(srcfp = fopen(argv[1],"r"))){
perror("srcfp fopen error");
return -1;
}
//定义文件指针打开或创建一个目标文件,设为可写入
FILE *dstfp;
if(NULL==(dstfp = fopen(argv[2],"w"))){
perror("dstfp fopen error");
return -1;
}
//定义一个字符串来接受被复制文件内的内容
char buf[6] = {0};
//buf接收到内容后,使用fputs函数写入到目标文件中
while(fgets(buf,6,srcfp)!=NULL){
fputs(buf,dstfp);
}
//关闭两个文件夹
fclose(srcfp);
fclose(dstfp);
printf("复制成功\n");
return 0;
}
运行结果
思维导图