linux c实现myecho、mycat、mycp

myecho、mycat、mycp分别用于模拟系统命令echo、cat、cp
代码如下:
myecho

#include<stdlib.h>
#include<stdio.h>
int main(int argc,char *argv[]){
    if(argc==1){
            printf("Error:need parameter!\n");
            exit(0);
    }
    for(int i=1;i<argc;i++)
            printf("%s ",argv[i]);
    printf("\n");
    return 0;
}

mycat

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

int main(int argc,char *argv[]){
        FILE *fp;
        int fsize;
        char *buffer;

        if(argc!=2){
                printf("Error:parameter wrong...\n");
                exit(0);
        }

        fp=fopen(argv[1],"r");
        if(!fp){
                printf("Error:can't open the file!\n");
                exit(0);
        }

        fseek(fp,0,SEEK_END);
        fsize=ftell(fp);
        rewind(fp);

        buffer=(char*)malloc((1+fsize)*sizeof(char));
        if(!buffer){
                printf("Error:memory malloc wrong!\n");
                exit(0);
        }

        fread(buffer,1,fsize,fp);

        printf("%s\n",buffer);

        fclose(fp);
        free(buffer);

        return 0;

}

mycp

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

int main(int argc,char *argv[]){
    FILE *fp;
    int fsize;
    int fr;
    char *buffer;

    if(argc!=3){
            printf("Error:wrong parameter...\n");
            return 0;
    }

    fp=fopen(argv[1],"r");
    if(!fp){
            printf("Error:can't open the file!\n");
            exit(0);
    }

    fseek(fp,0,SEEK_END);
    fsize=ftell(fp);
    rewind(fp);

    buffer=(char *)malloc((1+fsize)*sizeof(char));
    if(!buffer){
            printf("Error:memory wrong!\n");
            exit(0);
    }

    fr=fread(buffer,1,fsize,fp);
    if(!fr){
            printf("Error:read wrong!\n");
            exit(0);
    }

    fclose(fp);

    fp=fopen(argv[2],"w");
    if(!fp){
            printf("Error:open file wrong!\n");
            exit(0);
    }

    fwrite(buffer,1,fsize,fp);

    fclose(fp);
    free(buffer);
    return 0;

}

欢迎留言交流。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值