1.
用
fgets
和
fputs
实现文件的拷贝
#include <stdio.h>
int main(int argc, const char *argv[])
{
if(argc<2)
{
printf("请输入要拷贝的文件名\n");
return -1;
}
FILE *fp=fopen(argv[1],"r");
if(NULL==fp)
{
return -1;
}
FILE *fp_w=fopen("./copy.txt","w");
if(NULL==fp_w)
char c[10];
while((c=fgetc(fp))!=EOF)
{
fputs(c,fp_w);
}
printf("拷贝完毕\n");
fclose(fp);
return 0;
}
2.
用
fgets
实现计算一个文件有几行。
#include <stdio.h>
#define PRINT_ERR(err) do{\
printf("line:%d\n",__LINE__);\
perror(err);\
}whlie(0)
int main(int argc, char const *argv[])
{
FILE *fp;
char str[10];
int line=0;
if(argc!=2)
PRINT_ERR("格式错误");
if((fp=fopen(argv[1],"r"))==NULL)
PRINT_ERR("open file error");
while((fgets(str,sizeof(str),fp))!=NULL)
{
if(strlen(str)<9)
{
line++;
continue;
}
if(str[strlen(str)-1]=='\n')
{
line++;
continue;
}
}
printf("line=%d\n",line);
return 0;
}
3.用fgetc实现,计算一个文件有几行,要求封装成函数,用命令行传参
#include <stdio.h>
#define PRINT_ERR(err) do{\
printf("line:%d\n",__LINE__);\
perror(err);\
}whlie(0)
int getc_line(FILE *fp, int argc, char const *p)
{
char c;
int line = 0;
if (argc != 2)
{
printf("格式错误\n");
return -1;
}
if ((fp = fopen(p, "r")) == NULL)
PRINT_ERR("fopen");
while ((c = fgetc(fp)) != EOF)
{
if (c == '\n')
line++;
}
printf("line=%d\n", line + 1);
}
int main(int argc, char const *argv[])
{
FILE *fp;
char const *p = argv[1];
getc_line(fp, argc, p);
return 0;
}