• C语言文件读写,文件相关操作


    C语言文件读写,文件相关操作

    1.C语言万物皆是地址,文件读操作

    //
    // Created by MagicBook on 2023-10-22.
    //
    #include 
    #include 
    #include 
    #include 
    
    
    int main() {
        //文件路径,r,w,rb,rw
        //返回值结构体
        char *fileName = "C:\\Users\\MagicBook\\Desktop\\tv.txt";
        //读的权限,文件必须存在
        FILE *file = fopen(fileName, "r");
        if (!file) {
            //退出程序
            exit(0);
        }
        //定义缓存
        char buffer[10];
        //
        while (fgets(buffer, 10, file)) {
    
        }
        fclose(file);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    2.文件的写

    //
    // Created by MagicBook on 2023-10-22.
    //
    #include 
    #include 
    #include 
    #include 
    
    
    int main() {
        //文件路径,r,w,rb,rw
        //返回值结构体
        char *fileName = "C:\\Users\\MagicBook\\Desktop\\tvv.txt";
        //写的权限,会自动生成文件
        FILE *file = fopen(fileName, "w");
        if (!file) {
            //退出程序
            exit(0);
        }
        fputs("sdsadds", file);
        fclose(file);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    3.文件的复制

    //
    // Created by MagicBook on 2023-10-22.
    //
    #include 
    #include 
    #include 
    #include 
    
    //二进制文件来操作rb,rw,
    int main() {
        //文件路径,r,w,rb,rw
        //返回值结构体
        char *fileName = "C:\\Users\\MagicBook\\Desktop\\tv.txt";
        //目标
        char *fileNameCopy = "C:\\Users\\MagicBook\\Desktop\\tvv.txt";
        //读取二进制数据
        FILE *file1 = fopen(fileName, "rb");
        //写入二进制数据
        FILE *file2 = fopen(fileName, "rw");
    
        if (!file1 || !file2) {
            exit(0);
        }
        //412 * 4
        int buffer[512];
        //每次接收的长度
        int len;
        //容器buffer,每次偏移多少,容器大小,
        while ((len = fread(buffer, sizeof(int), sizeof(buffer) / sizeof(int), file1) != 0)) {
            fwrite(buffer, sizeof(int), len, fileNameCopy);
        }
        fclose(file1);
        fclose(file2);
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    4.获取文件的大小

    //
    // Created by MagicBook on 2023-10-22.
    //
    #include 
    #include 
    #include 
    #include 
    
    //二进制文件来操作rb,rw,
    int main() {
        //读取头指针,指针移动,移动到末尾,求得文件的大小
    
    
        //文件路径,r,w,rb,rw
        //返回值结构体
        char *fileName = "C:\\Users\\MagicBook\\Desktop\\tv.txt";
    
        //读取二进制数据
        FILE *file1 = fopen(fileName, "rb");
        //写入二进制数据
        FILE *file2 = fopen(fileName, "rw");
    
        if (!file1 || !file2) {
            exit(0);
        }
        //移动指针
        fseek(file1, 0, SEEK_END);
        //读取信息,字节大小
        long size = ftell(file1);
        
    
        fclose(file1);
        fclose(file2);
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    5.文件的加密解密

    加密

    //
    // Created by MagicBook on 2023-10-22.
    //
    #include 
    #include 
    #include 
    #include 
    
    //二进制文件来操作rb,rw,
    int main() {
        //读取头指针,指针移动,移动到末尾,求得文件的大小
    
    
        //文件路径,r,w,rb,rw
        //返回值结构体
        char *fileName = "C:\\Users\\MagicBook\\Desktop\\test.png";
        //加密
        char *fileNameEncode = "C:\\Users\\MagicBook\\Desktop\\test_encode.png";
    
    
        //读取二进制数据
        FILE *file1 = fopen(fileName, "rb");
        //写入二进制数据
        FILE *file2 = fopen(fileNameEncode, "rw");
    
        if (!file1 || !file2) {
            exit(0);
        }
        //加密:破坏二进制文件
        //解密:还原文件
        //接收读取的值
        int c;
        //返回值EOF
        while ((c == fgetc(file1) != EOF)) {
            fputc(c^5,file2);
        }
        fclose(file1);
        fclose(file2);
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    解密

    //
    // Created by MagicBook on 2023-10-22.
    //
    #include 
    #include 
    #include 
    #include 
    
    //二进制文件来操作rb,rw,
    int main() {
        //读取头指针,指针移动,移动到末尾,求得文件的大小
    
    
        //文件路径,r,w,rb,rw
        //返回值结构体
        char *fileName = "C:\\Users\\MagicBook\\Desktop\\test.png";
        //加密
        char *fileNameEncode = "C:\\Users\\MagicBook\\Desktop\\test_encode.png";
    
        //密钥
        char *password = "123456";
    
        //读取二进制数据
        FILE *file1 = fopen(fileName, "rb");
        //写入二进制数据
        FILE *file2 = fopen(fileNameEncode, "rw");
    
        if (!file1 || !file2) {
            exit(0);
        }
        //加密:破坏二进制文件
        //解密:还原文件
        //接收读取的值
        int c;
        int index = 0;
        int len = strlen(password);
        //返回值EOF
        while ((c == fgetc(file1)) != EOF) {
            char item = password[index % len];
            fputc(c ^ item, file2);
            index++;
        }
        fclose(file1);
        fclose(file2);
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
  • 相关阅读:
    深入理解注解驱动配置与XML配置的融合与区别
    Autosar深入-MPU
    【C++】如何理解函数调用中的传值和传址
    软件测试入门一(认识软件测试)
    失眠睡不着如何调理
    Java中ArrayList和Vector的区别是什么呢?
    ubuntu16 iptables命令行黑白名单设置
    【算法可视化】模拟算法专题
    EPICS简单实例2 -- subroutine记录(sub)介绍与使用
    制造业质量管理如何实现数字化?
  • 原文地址:https://blog.csdn.net/weixin_46039528/article/details/134065555