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

文章目录

  • C语言文件读写,文件相关操作
    • 1.C语言万物皆是地址,文件读操作
    • 2.文件的写
    • 3.文件的复制
    • 4.获取文件的大小
    • 5.文件的加密解密

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;
}

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;
}

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;
}

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;
}

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;
}

解密

//
// 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;
}

你可能感兴趣的:(Android进阶训练营,c语言,开发语言)