linux--文件实现copy功能(fgetc和fputc)

首先,实现copy,必须有三个参数(./mycp srcfile desfile ),所以得给main()函数传参.
步骤如下:
打开文件1
打开文件2
读文件1
写文件2
关闭文件1
关闭文件2

#include<stdio.h>
#include<stdlib.h>

int main(int argc,char **argv)
{
        FILE *fps,*fds;
        int ch;
        if(argc<3)
        {
                fprintf(stderr,"Usage:%s <src_file> <dest_file>\n",argv[0]);
                exit(1);
        }
        fps = fopen(argv[1],"r");
        if(fps==NULL)
        {
                perror("fopen:");
                exit(1);
        }

  

        fds = fopen(argv[2],"w+");
        if(fds==NULL)
        {
                fclose(fps);
                perror("fopen:");
                exit(1);
        }
        while(1)
        {
                ch=fgetc(fps);
                if(ch==EOF)
                        break;
                fputc(ch,fds);
        }
        fclose(fps);
        fclose(fds);
        exit(0);
}

fgetc()函数,会返回一个int型,如果失败则会返回EOF
在这里插入图片描述用diff这个命令可以判定两个文件是否相同,若相同什么都不返回
在这里插入图片描述
因为fgetc函数是一个个读的,只有读到文件末尾,才会返回EOF,所以它也可以用来计算文件的大小。`

#include<stdio.h>
#include<stdlib.h>

int main(int argc,char **argv)
{
        FILE *fps;
        int count=0;
        if(argc<2)
        {
                fprintf(stderr,"Usage:%s <src_file> <dest_file>\n",argv[0]);
                exit(1);
        }
        fps = fopen(argv[1],"r");
        if(fps==NULL)
        {
                perror("fopen:");
                exit(1);
        }
        
        while(fgetc(fps)!=EOF)
        {
                count++;
        } 
		printf("count= %d\n",count);
        fclose(fps);
        exit(0);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值