美文网首页
文件操作以及加解密

文件操作以及加解密

作者: Dalvik_ | 来源:发表于2021-03-15 15:57 被阅读0次

    1.文件的读。

     // fopen打开文件(参数1:文件路径 文件源,  参数2:模式 r(读) w(写)  rb(作为二进制文件读) rw(作为二进制文件写)  返回值 FILE 结构体)
    #include <stdio.h>
    
    int main() {
        FILE *file = fopen("F:\\Cproject\\Class1\\acb.txt", "r");
        if (file) {
            char buffer[10];
          // fgets 根据缓存区大小读取文件
            while (fgets(buffer, 10, file)) {
                printf("%s", buffer);
            }
        }
       fclose(file);
        return 0;
    }
    

    2.文件的写。

    int main() {
        FILE *file = fopen("F:\\Cproject\\Class1\\write.txt", "w");
        if (file) {
            fputs("123121231!!!", file);
        }
        fclose(file);
    }
    

    3.文件复制。

    int main() {
        FILE *file = fopen("F:\\Cproject\\Class1\\file.txt", "rb");
        FILE *fileCopy = fopen("F:\\Cproject\\Class1\\fileCopy.txt", "wb");
        if (file && fileCopy) {
            char buffer[512];
            int len; // 每次读取的长度
            while ((len = fread(buffer, sizeof(char), 512, file)) != 0) {
                fwrite(buffer, sizeof(char), len, fileCopy);
            }
        }
       // 关闭文件
        fclose(file);
        fclose(fileCopy);
        return 0;
    }
    
    

    4.获取文件的大小。

    int main() {
        FILE *file = fopen("F:\\Cproject\\Class1\\file.txt", "rb");
        fseek(file, 0, SEEK_END); // 挪动文件的指针,到文件最末尾
        long file_size = ftell(file); //读取文件指针的位置
        printf("file size:%d\n", file_size);
        // 关闭文件
       fclose(file);
      
    }
    

    5.文件加密与文件解密。
    文件加密

    int main() {
        FILE *file = fopen("F:\\Cproject\\Class1\\file.txt", "rb");
        FILE *fileDecode = fopen("F:\\Cproject\\Class1\\decodeFile.txt", "wb");
        int buffer;
        while ((buffer = fgetc(file)) != EOF) {
            fputc(buffer^4, fileDecode);
        }
        // 关闭文件
       fclose(file);
       fclose(fileDecode);
    }
    

    文件解密

    int main() {
        FILE *file = fopen("F:\\Cproject\\Class1\\decodeFile.txt", "rb");
        FILE *fileEncode= fopen("F:\\Cproject\\Class1\\encodeFile.txt", "wb");
        int buffer;
        while ((buffer = fgetc(file)) != EOF) {
            fputc(buffer^4, fileEncode);
        }
        fclose(file);
        fclose(fileEncode);
    }
    

    6.字符串密码加密与解密。
    加密

     
    int main() {
        char *fileNameStr = "D:\\Temp\\IMG.jpg"; // 来源
        char * fileNameStrEncode = "D:\\Temp\\IMG_encode.jpg"; // 加密后的目标文件
    
        // 密钥
        char * password = "123456"; // 我现在做的事情:我的密钥 必须生效
    
        FILE * file = fopen(fileNameStr, "rb"); // r 必须字节提前准备好文件
        FILE * fileEncode = fopen(fileNameStrEncode, "wb"); // w 创建一个0kb的文件
    
        if (!file || !fileEncode) {
            printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);
            exit(0); // 退出程序
        }
    
        int c;
        int index = 0;
        int pass_len = strlen(password);
        while ((c = fgetc(file)) != EOF) {
            char item = password[index%pass_len];
            // 1 2 3 4 5 6  1 2 3 4 5 6  1 2 3 4 5 6 ...
    
            printf("item:%c%\n", item);
            fputc(c ^ item, fileEncode);
            index ++;
        }
    
        // 关闭文件
        fclose(file);
        fclose(fileEncode);
    }
    

    解密

    int main() {
    
        char * fileNameStr = "D:\\Temp\\IMG_encode.jpg"; // 来源
        char * fileNameStrDecode = "D:\\Temp\\IMG_decode.jpg"; // 解密后的目标文件
    
        FILE * file = fopen(fileNameStr, "rb"); // r 必须字节提前准备好文件
        FILE * fileDecode = fopen(fileNameStrDecode, "wb"); // w 创建一个0kb的文件
    
        if (!file || !fileDecode) {
            printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);
            exit(0); // 退出程序
        }
    
        // 密钥
        char * password = "123456"; // 我现在做的事情:我的密钥 必须生效
    
        int  c;
        int index = 0;
        int pass_len = strlen(password);
        while ((c = fgetc(file)) != EOF) {
            fputc(c ^ password[index%pass_len], fileDecode);
            index++;
        }
    
        fclose(file);
        fclose(fileDecode);
    
        return 0;
    }
    
    
    

    相关文章

      网友评论

          本文标题:文件操作以及加解密

          本文链接:https://www.haomeiwen.com/subject/biiyqltx.html