用fgetc和fputc
1. 用fgetc和fputc实现,拷贝一个文件
#include<stdio.h>
int main(int argc, const char *argv[])
{
if(argc<3)
{
printf("请输入文件名\n");
return -1;
}
FILE *fp=fopen(argv[2],"w+");
if(fp==NULL)
{
perror("fopen");
return -1;
}
FILE *fp1=fopen(argv[1],"r");
if(fp1==NULL)
{
perror("fopen");
return -1;
}
char c;
c=fgetc(fp1);
while(c!=EOF)
{
if(fputc(c,fp)<0)
{
perror("fgetc");
return -1;
}
c=fgetc(fp1);
}
printf("拷贝文件完成\n");
if(fclose(fp)<0)
{
perror("fclose");
return -1;
}
if(fclose(fp1)<0)
{
perror("fclose");
return -1;
}
return 0;
}
2. 用fgetc计算一个文件的大小,要求封装成函数
int count_char(char *name)
{
FILE *fp=fopen(name,"r");
if(fp==NULL)
{
perror("fopen");
return -1;
}
int count=0;
while(fgetc(fp)!=EOF)
{
count++;
}
printf("该文件有%d个字节\n",count);
if(fclose(fp)<0)
{
perror("fclose");
}
return count;
}
3.用fgetc计算一个文件有几行,要求封装成函数
int count_line(char *name)
{
FILE *fp=fopen(name,"r");
if(fp==NULL)
{
perror("fopen");
return -1;
}
int line=0;
int l=0;
do
{
l=fgetc(fp);
if(l==10)
{
line++;
}
}while(l!=EOF);
printf("该文件有%d行\n",line);
if(fclose(fp)<0)
{
perror("fclose");
}
return line;
}
用fputs和fgets
1. 用fgets和fputs实现,拷贝一个文件
#include<stdio.h>
#include<errno.h>
int main(int argc, const char *argv[])
{
FILE *fp_r=fopen(argv[1],"r");
if(NULL==fp_r)
{
perror("fopen_fp_r");
return -1;
}
FILE *fp=fopen(argv[2],"w");
if(NULL==fp)
{
perror("fopen_fp");
return -1;
}
char s[100];
char *q;
do
{
if((q=fgets(s,sizeof(s),fp_r))==NULL && errno!=0)
{
perror("fgets");
return -1;
}
if(fputs(s,fp)==EOF)
{
perror("fputs");
return -1;
}
}while(q!=NULL);
printf("拷贝完成\n");
if(fclose(fp)<0)
{
perror("fclose");
}
return 0;
}
2. 用fgets计算一个文件的大小,要求封装成函数
int count_char(char *name)
{
FILE *fp=fopen(name,"r");
if(fp==NULL)
{
perror("fopen");
return -1;
}
int count=0;
char s[50];
char *q;
do
{
q=fgets(s,sizeof(s),fp);
if(q!=NULL)
{
count+=strlen(s);
}
}while(q!=NULL);
printf("该文件有%d个字节\n",count);
if(fclose(fp)<0)
{
perror("fclose");
}
return count;
}
3. 用fgets计算一个文件有几行,要求封装成函数
int count_line(char *name)
{
FILE *fp=fopen(name,"r");
if(fp==NULL)
{
perror("fopen");
return -1;
}
int line=0;
char s[500];
char *q;
do
{
q=fgets(s,sizeof(s),fp);
line++;
}while(q!=NULL);
printf("该文件有%d行\n",line);
if(fclose(fp)<0)
{
perror("fclose");
}
return line;
}