通过递增字符加密文本文件
Encrypting a text file by incrementing chars
我需要通过将每个字符递增 1 来加密一个简单的文本文件,即 'a' 变为 'b','b' 变为 'c' 等 'z' 变成 'a'.
我已经按照下面的代码完成了这项工作,虽然我的大部分输出都是正确的,但似乎在每个文件的末尾都有问题。
例如,当输入文件包含 'a b c d' 时,生成的输出是 'b c d ef' 而不是应为 'b c d e' 的答案。我似乎无法弄清楚。
这是我的加密函数代码:
void encrypt(char* inFileName, char* outFileName) {
out_stream.open(outFileName);
in_stream.open(inFileName);
if(in_stream.fail()) {
cout << "Failed to open input file." << endl;
exit(1);
}
else {
while(!in_stream.eof()) {
in_stream.get(letter);
if (letter == 'z') {
letter = 'a';
}
if (letter == 'Z') {
letter = 'A';
}
if (letter == ' ') {
letter = letter;
}
else {
letter = letter + 1;
}
out_stream << letter;
}
}
}
移位密码可以通过这种方式实现:
while(!in_stream.eof()) {
if (letter>='a' && letter<='Z')
letter = (letter+1)%'Z' + 'a';
out_stream << letter;
}
减少代码中的冗余并使其尽可能紧凑,代码中有很多无用的条件。
主要逻辑在于对a...Z中的字符进行加密,你无法预测文本文件中的其他字符,如\n\0等,因此根本不应该处理。
我可以推荐这段代码
while(!in_stream.eof()) {
if ((letter>='A' && letter<='Y')|| (letter>='a' && letter<='y'))
letter = (letter+1);
else if(letter== 'Z' || letter== 'z')
letter =(letter-25);
out_stream << letter;
}
我需要通过将每个字符递增 1 来加密一个简单的文本文件,即 'a' 变为 'b','b' 变为 'c' 等 'z' 变成 'a'.
我已经按照下面的代码完成了这项工作,虽然我的大部分输出都是正确的,但似乎在每个文件的末尾都有问题。
例如,当输入文件包含 'a b c d' 时,生成的输出是 'b c d ef' 而不是应为 'b c d e' 的答案。我似乎无法弄清楚。
这是我的加密函数代码:
void encrypt(char* inFileName, char* outFileName) {
out_stream.open(outFileName);
in_stream.open(inFileName);
if(in_stream.fail()) {
cout << "Failed to open input file." << endl;
exit(1);
}
else {
while(!in_stream.eof()) {
in_stream.get(letter);
if (letter == 'z') {
letter = 'a';
}
if (letter == 'Z') {
letter = 'A';
}
if (letter == ' ') {
letter = letter;
}
else {
letter = letter + 1;
}
out_stream << letter;
}
}
}
移位密码可以通过这种方式实现:
while(!in_stream.eof()) {
if (letter>='a' && letter<='Z')
letter = (letter+1)%'Z' + 'a';
out_stream << letter;
}
减少代码中的冗余并使其尽可能紧凑,代码中有很多无用的条件。
主要逻辑在于对a...Z中的字符进行加密,你无法预测文本文件中的其他字符,如\n\0等,因此根本不应该处理。
我可以推荐这段代码
while(!in_stream.eof()) {
if ((letter>='A' && letter<='Y')|| (letter>='a' && letter<='y'))
letter = (letter+1);
else if(letter== 'Z' || letter== 'z')
letter =(letter-25);
out_stream << letter;
}