-
用fgets和fputs实现文件的拷贝
#include <stdio.h>
#define ERR_M(msg) {printf("line=%d\n",__LINE__);perror(msg);}
int main(int argc, const char *argv[])
{
//打开文件
FILE* fp=fopen("01.c","r");
if (fp==NULL)
{
ERR_M("fopen");
return -1;
}
FILE* fp2=fopen("02.c","w");
if (fp2==NULL)
{
ERR_M("fopen");
return -2;
}
char a[40];
char *p;
while((p=fgets(a,sizeof(a),fp))!=NULL)
{
fputs(p,fp2);
}
fclose(fp);
fclose(fp2);
return 0;
}
2.用fgets实现计算一个文件有几行。
#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("03.c","r");
if (fp==NULL)
{
perror("fopen");
return -1;
}
char *p;
int count=0;
char a[40];
while((p=fgets(a,sizeof(a),fp))!=NULL)
{
count++;
}
if(count==0)
{
count++;
}
printf("%d\n",count);
fclose(fp);
return 0;
}
3.用fgetc实现,计算一个文件有几行,要求封装成函数,用命令行传参
#include <stdio.h>
int j_line(FILE *p)
{
char a;
int count=0;
while((a=fgetc(p))!=EOF)
{
if(a=='\n')
{
count++;
}
}
if (count==0)
{
count++;
}
return count;
}
int main(int argc, const char *argv[])
{
FILE*fp=fopen(argv[1],"r");
printf("%d\n",j_line(fp));
fclose(fp);
return 0;
}