2024.6.6 文件IO练习

要求用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;
}   
                                                                        
                                                                        

运行结果(多了个换行)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值