day05_IO操作

2021-02-02  本文已影响0人  闪客飞飞

// io 文件操作 读取文件
//void main(){
// char *path= "F:\BaiduNetdiskDownload\files\friends.txt";
// //打开文件
// FILE *fp = fopen(path, "r");
// if (fp == NULL){
// printf("文件打开失败:");
// return;
// }
// //读取
// char buff[50];//缓冲
// while (fgets(buff,50,fp))
// {
// printf("%s", buff);
// }
// //关闭
// fclose(fp);
// system("pause");
// getchar();
//}
//io 操作 写入文件

//void main(){
// char *path = "F:\BaiduNetdiskDownload\files\friends_new.txt";
// //打开文件
// FILE *fp = fopen(path, "w");
// char *text = "nwe chengyue 23nnnn";
// fputs(text, fp);
// //关闭流
// fclose(fp);
// system("pause");
// getchar();
//}

// 计算机的文件存储 物理上都是 二进制文件
// 文本文件 和 二进制文件 都是逻辑上的区分
// c 读写文本文件和二进制文件的差别仅仅体现在回车换行符
// 写文本时 每遇到一个‘\n’ 会将其转换成‘\r\n’(回车换行)
// 读取文件 的时候 每遇到一个‘\r\n’ 会将其转成‘\n’ (回车换行)
//void main(){
// char *read_path = "F:\BaiduNetdiskDownload\files\liuyan.png";
// char *write_path = "F:\BaiduNetdiskDownload\files\liuyan_new.png";
// //打开 读取文件 b 字符表示操作二进制文件binary
// FILE *read_fp = fopen(read_path, "rb");
// FILE *write_fp = fopen(write_path, "wb");
// //复制
// int buff[50];// 缓冲区域
// int len = 0;//每次读取到的数据的长度
// while ((len = fread(buff, sizeof(int), 50, read_fp)) != 0){
// //将读到的内容写入到新的文件中
// fwrite(buff,sizeof(int),len,write_fp);
// }
// fclose(read_fp);
// fclose(write_fp);
// system("pause");
// getchar();
//}

//获取文件的大小
//void main(){
// char *read_path = "F:\BaiduNetdiskDownload\files\liuyan.png";
// FILE *fp = fopen(read_path, "r");
// //重新定位文件 SEEK_END 末尾的指针
// // 0 偏移量
// fseek(fp,0,SEEK_END);
// //返回当前的文件指针 ,相当于文件开头的位移量
// long filesize=ftell(fp);
//
// printf("%d", filesize);
// getchar();
//}

//练习:文本文件加解密

//异或
//规则:1^1=0, 0^0=0, 1^0=1, 0^1=1 同为0,不同为1
//加密
void crpypt(char normal_path[],char crypt_path[]){
//打开文件
FILE *normal_fp = fopen(normal_path, "r");
FILE *crypt_fp = fopen(crypt_pat h, "w");
//一次读取一个字符
int ch;
while ((ch = fgetc(normal_fp)) != EOF){ //End of File
//写入(异或运算)
fputc(ch ^ 9,crypt_fp);
}
//关闭
fclose(crypt_fp);
fclose(normal_fp);
}

//解密
void decrpypt(char crypt_path[], char decrypt_path[]){
//打开文件
FILE *normal_fp = fopen(crypt_path, "r");
FILE *crypt_fp = fopen(decrypt_path, "w");
//一次读取一个字符
int ch;
while ((ch = fgetc(normal_fp)) != EOF){ //End of File
//写入(异或运算)
fputc(ch ^ 9, crypt_fp);
}
//关闭
fclose(crypt_fp);
fclose(normal_fp);
}
void main(){
char *read_path = "F:\BaiduNetdiskDownload\files\friends.txt";
char *crypt_path = "F:\BaiduNetdiskDownload\files\friends_wenew.txt";
char *decrypt_path = "F:\BaiduNetdiskDownload\files\friends_decryptnew.txt";
//crpypt(read_path, crypt_path);
//解密
decltype(crypt_path, decrypt_path);
system("pause");
getchar();
}

//二进制文件加解密
//读取二进制文件中的数据时,一个一个字符读取
//密码:ilovely
/*
void crpypt(char normal_path[], char crypt_path[],char password[]){
//打开文件
FILE *normal_fp = fopen(normal_path, "rb");
FILE *crypt_fp = fopen(crypt_path, "wb");
//一次读取一个字符
int ch;
int i = 0; //循环使用密码中的字母进行异或运算
int pwd_len = strlen(password); //密码的长度
while ((ch = fgetc(normal_fp)) != EOF){ //End of File
//写入(异或运算)
fputc(ch ^ password[i % pwd_len], crypt_fp);
i++;
}
//关闭
fclose(crypt_fp);
fclose(normal_fp);
}

//解密
void decrpypt(char crypt_path[], char decrypt_path[],char password[]){
//打开文件
FILE *normal_fp = fopen(crypt_path, "rb");
FILE *crypt_fp = fopen(decrypt_path, "wb");
//一次读取一个字符
int ch;
int i = 0; //循环使用密码中的字母进行异或运算
int pwd_len = strlen(password); //密码的长度
while ((ch = fgetc(normal_fp)) != EOF){ //End of File
//写入(异或运算)
fputc(ch ^ password[i % pwd_len], crypt_fp);
i++;
}
//关闭
fclose(crypt_fp);
fclose(normal_fp);

}

void main(){
char *normal_path = "E:\dongnao\vip\ndk\08_08_C_05\files\liuyan.png";
char *crypt_path = "E:\dongnao\vip\ndk\08_08_C_05\files\liuyan_crypt.png";
char *decrypt_path = "E:\dongnao\vip\ndk\08_08_C_05\files\liuyan_decrypt.png";

//crpypt(normal_path, crypt_path,"iloveqq");
//解密
decrpypt(crypt_path, decrypt_path,"iloveqq");

getchar();
}
*/

//作业:文件的分割以及合并

上一篇下一篇

猜你喜欢

热点阅读