从键盘输入字符串并保存成文件。要求: (1)输入字符串中包括:大小写字母、空格、数字等字符,以“#”作为字符串输入的结束条件; (2)对输入的字符进行加密并保存,以二进制文件方式保存,用户可以输入保存路径,如:C:\file.txt ; (3)打开文件时,对加密文件进行解密并显示在屏幕上。
时间: 2024-03-18 22:41:36 浏览: 81
好的,这里是代码示例:
```c++
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
// 加密函数
void encrypt(char* str, int len) {
for (int i = 0; i < len; i++) {
if (isalpha(str[i])) { // 如果是字母
str[i] = islower(str[i]) ? 'a' + ('z' - str[i]) : 'A' + ('Z' - str[i]); // 大小写转换
}
else if (isdigit(str[i])) { // 如果是数字
str[i] = '0' + ('9' - str[i]); // 数字加密
}
// 其他字符不做处理
}
}
// 解密函数
void decrypt(char* str, int len) {
for (int i = 0; i < len; i++) {
if (isalpha(str[i])) { // 如果是字母
str[i] = islower(str[i]) ? 'a' + ('z' - str[i]) : 'A' + ('Z' - str[i]); // 大小写转换
}
else if (isdigit(str[i])) { // 如果是数字
str[i] = '0' + ('9' - str[i]); // 数字解密
}
// 其他字符不做处理
}
}
int main() {
char fileName[100];
cout << "请输入保存路径及文件名: ";
cin.getline(fileName, 100);
ofstream output(fileName, ios::out | ios::binary); // 以二进制方式打开文件
char str[1000];
cout << "请输入字符串(以#结束): ";
cin.getline(str, 1000, '#');
int len = strlen(str);
encrypt(str, len); // 加密
output.write(str, len); // 写入文件
output.close();
// 读取加密文件
ifstream input(fileName, ios::in | ios::binary);
input.seekg(0, ios::end); // 定位到文件尾
int size = input.tellg(); // 获取文件大小
input.seekg(0, ios::beg); // 定位到文件头
char* buffer = new char[size];
input.read(buffer, size); // 读取文件内容
decrypt(buffer, size); // 解密
buffer[size] = '\0'; // 字符串结尾加\0
cout << "解密后的字符串为: " << buffer << endl;
delete[] buffer;
input.close();
return 0;
}
```
注意:加密解密方式仅为演示用,不可用于实际应用。
阅读全文