C语言文件读写,文件相关操作
文章目录
- C语言文件读写,文件相关操作
- 1.C语言万物皆是地址,文件读操作
- 2.文件的写
- 3.文件的复制
- 4.获取文件的大小
- 5.文件的加密解密
C语言文件读写,文件相关操作
1.C语言万物皆是地址,文件读操作
//
// Created by MagicBook on 2023-10-22.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
//二进制文件来操作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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
//二进制文件来操作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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
//二进制文件来操作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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
//二进制文件来操作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;
}