1.思维导图:
2.作业:
1> 使用fgets统计一个文件的行号
代码:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
//对参数个数进行判断
if(argc != 2)
{
printf("file count error\n");
printf("usage: ./a.out fileName\n");
return -1;
}
//定义文件指针,打开文件
FILE *fp;
if((fp = fopen(argv[1], "r")) == NULL)
{
perror("open file");
return -1;
}
//读取字符串
char c[1024];
int line = 0;
while((fgets(c,sizeof(c),fp)) != NULL)
{
if(c[strlen(c)-1] == '\n')
{
line++;
}
}
//关闭文件
fclose(fp);
//输出行号
printf("一共%d行\n", line);
return 0;
}
输出:
2> 使用fgets、fputs拷贝文件
代码:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
//判断传进来的文件个数是否为3
if(argc !=3 )
{
printf("file count error\n");
printf("usage: ./a.out srcfile destfile\n");
return -1;
}
//定义两个文件指针,分别指向源文件和目标文件
FILE *srcfp, *destfp;
//以只读的形式打开源文件
if((srcfp=fopen(argv[1], "r")) == NULL)
{
perror("srcfile open");
return -1;
}
//以只写的形式打开目标文件
if((destfp = fopen(argv[2], "w")) == NULL)
{
perror("destfile open");
return -1;
}
//定义字符搬运工
char c[1024];
while((fgets(c,sizeof(c),srcfp)) != NULL)
{
//将字符写入到目标文件中去
fputs(c, destfp);
}
//关闭两个文件
fclose(srcfp);
fclose(destfp);
return 0;
}
输出: