文件操作以及加解密
2021-03-15 本文已影响0人
Dalvik_
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;
}