zoukankan      html  css  js  c++  java
  • 文件加密2——基础版(限文本)

    这个就比上一个版本简单很多。

    并且每次操纵的也都不是一行。

    而是每次一个字符,这样效率就比较低并且编码方式 也是采用每次就加那么一个固定写死的字符。就比较坑。。。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MYKEY 6
    
    #pragma warning(disable:4996)
    
    
    void readFile(FILE *);
    void copyFile(const FILE *, FILE *);
    void codeFile(const FILE *, FILE *);
    void decodeFile(const FILE *, FILE *);
    void progress(const int, const char **pras);
    int main(int argc,char **argv){
    
        
        progress(argc, argv);
        //FILE *pf = fopen("code.txt", "r");
        //FILE *pfw = fopen("decode.txt", "w");
    
        //readFile(pf);
        //copyFile(pf,pfw);
        //decodeFile(pf, pfw);
    
        //char c = 0;
        //char cs[10] = { 0 }; 两种初始化方式
        //c = getc(pf);
        //    putc(c, pfw);
        
    
        
    
    
        getchar();
        return 0;
    }
    void progress(const int parnum, const char **pracon){
        if (parnum < 4){
            printf("参数过少,需要四个");
        }
        else if (parnum>4){
            printf("参数过多,需要四个");
        }
        else{
            if (strcmp(pracon[1], "code") == 0){
                //这里还能提取呢 //1
                FILE *src = fopen(pracon[2], "r");
                FILE *dest = fopen(pracon[3], "w");
                codeFile(src, dest);
                fclose(src);
                fclose(dest);
            }
            else if (strcmp(pracon[1], "decode") == 0){
                //这里还能提取呢 //1
                FILE *src = fopen(pracon[2], "r");
                FILE *dest = fopen(pracon[3], "w");
                decodeFile(src, dest);
                fclose(src);
                fclose(dest);
            }
            else{
                printf("第二个参数需要是:code 或者 decode");
            }
    
        }
    
    }
    
    
    void decodeFile(const FILE *src, FILE *dest){
        if (src != NULL&&dest != NULL){
            char c = 0;
            while ((c = getc(src)) != EOF){
                c -= MYKEY;
                putc(c, dest);
            }
        }
    }
    
    
    
    
    
    
    
    void codeFile(const FILE *src, FILE *dest){
    
        if (src != NULL&&dest != NULL){
        
            char c = 0;
            while ((c = getc(src)) != EOF){
                c += MYKEY;
                putc(c, dest);
            }
        }
    }
    
    void copyFile(const FILE *src,FILE * dest){
    
        //我说怎么总执行总不对劲,因为,每次还都输出了,这个文件。其实也就是因为每次都输出了这个文件。所以每次等到要拷贝的时候,文件已经移动到了文件的结尾了。所以每次拷贝都是空的文件。
        if (src != NULL&&dest != NULL){
        
            char c = 0;
            //char cs[10] = { 0 }; 两种初始化方式
            printf("f1");
            while((c=getc(src))!=EOF){
                //printf("f1");
                putc(c, dest);
            }
            printf("f2");
        }
        else{
            printf("到这了?");
    
    
        }
    }
    void readFile(FILE *p){
        if (p != NULL){
            char c;
            while ((c = getc(p)) != EOF){
                //这个目录好诡异。。。在同名子目录下,比如我们这个工程叫做文件复制,那么这个目录在 文件复制文件复制下面。
                printf("%c", c);
            }
        }
        else{
            printf("没有");
        }
    }
  • 相关阅读:
    Java技术 第六次实验 计科1501 胡开辉
    Java技术 第五次实验 计科1501 胡开辉
    Java第四次作业
    Java第三次作业
    Css新增内容
    Html5新增特性
    Jquery图集
    选项卡
    轮播图
    标准命名
  • 原文地址:https://www.cnblogs.com/letben/p/5246129.html
Copyright © 2011-2022 走看看