要求用fscanf\fprintf fgetc\fputc fgets\fputs实现文件拷贝。
代码
#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./text.txt","r");
if(NULL==fp)
{
perror("错误");
return -1;
}
FILE* cfp=fopen("./text_copy.txt","w");
if(NULL==cfp)
{
perror("错误");
return -1;
}
//用fscanf\fprintf完成
char c;
while(fscanf(fp,"%c",&c)!=EOF)
{
fprintf(cfp,"%c",c);
}
fseek(fp,0,SEEK_SET);//将流指针偏移到文件开头等价于:rewind(fp);
fclose(cfp);//释放流指针防止内存泄露
//用fgetc\fputc完成
FILE* cfp1=fopen("./text_copy1.txt","w");
if(NULL==cfp1)
{
perror("错误");
return -1;
}
c='\0';
while((c=fgetc(fp))!=EOF)
{
fputc(c,cfp1);
}
rewind(fp);
fclose(cfp1);
//用fgets\fputs完成
FILE* cfp2=fopen("./text_copy2.txt","w");
if(NULL==fp2)
{
perror("错误");
return -1;
}
char str[10];
while(fgets(str,sizeof(str),fp)!=NULL)
{
fputs(str,cfp2);
}
fclose(cfp2);
fclose(fp);
return 0;
}
运行结果
2.判断两个文件的内容是否完全相同。
代码
#include <stdio.h>
int main(int argc, const char *argv[])
{
FILE* fp = fopen("./text.txt","r");
if(NULL==fp)
{
perror("错误");
return -1;
}
FILE* fp1= fopen("./text_copy.txt","r");
if(NULL==fp1)
{
perror("错误");
return -1;
}
int re1,re2;
char c1,c2;
while(1)
{
re1=fscanf(fp,"%c",&c1);
re2=fscanf(fp1,"%c",&c2);
if(re1 !=re2)
{
printf("两个文件不一样\n");
break;
}
if(re1 == EOF || re2 ==EOF)
{
printf("两个文件一样\n");
break;
}
}
fclose(fp1);
fclose(fp);
return 0;
}
运行结果(多了个换行)