326
edits
(→Day 94) |
(→Day 94) |
||
| Line 35: | Line 35: | ||
这是我对丝滑性的理解,一步一步的前行,在前进的过程中,首先学会排除干扰因素。其次学会达到核心目标后,再把那些干扰因素一项项的加回去。最后我们就能够得到一个在真实环境中完美印证的理论、公式、方法...或者是一段程序。需要我们拥有一个本事,那就是让每一个过程都丝滑,对不?亲爱的宝贝。咱们通过一个事情,探讨一个方法论,是不是也很有趣味性呢。 | 这是我对丝滑性的理解,一步一步的前行,在前进的过程中,首先学会排除干扰因素。其次学会达到核心目标后,再把那些干扰因素一项项的加回去。最后我们就能够得到一个在真实环境中完美印证的理论、公式、方法...或者是一段程序。需要我们拥有一个本事,那就是让每一个过程都丝滑,对不?亲爱的宝贝。咱们通过一个事情,探讨一个方法论,是不是也很有趣味性呢。 | ||
说了这么多,talk it's cheap, show me your code。对的,这个准则下,改一改咱们的代码。思路是为了避开汉字编码这个大坑,直接读,然后硬加密,然后直接读,硬解密,然后再拼接。为了思路清晰,需要加密的内容,放到一个文件里,加密过的内容放到一个新文件里,然后加密过的内容,解密一下,直接通过终端显示出来。 | |||
<syntaxhighlight lang="c" line style="border: 1px dashed red;"> | |||
#include <stdio.h> | |||
#include <string.h> | |||
// encrypt | |||
void encrypt(char *str, int key) | |||
{ | |||
int len = strlen(str); | |||
for (int i = 0; i < len; i++) | |||
{ | |||
str[i] += key; | |||
} | |||
} | |||
// decrypt | |||
void decrypt(char *str, int key) | |||
{ | |||
int len = strlen(str); | |||
for (int i = 0; i < len; i++) | |||
{ | |||
str[i] -= key; | |||
} | |||
} | |||
int main() | |||
{ | |||
char filename[100], buffer[2048]; | |||
int key; | |||
// file and key | |||
printf("请输入要加密的文件名:"); | |||
scanf("%s", filename); | |||
printf("请输入密钥:"); | |||
scanf("%d", &key); | |||
FILE *fp = fopen(filename, "r"); | |||
if (fp == NULL) | |||
{ | |||
printf("无法打开文件 %s\n", filename); | |||
return 1; | |||
} | |||
fgets(buffer, sizeof(buffer), fp); | |||
// encrypted | |||
encrypt(buffer, key); | |||
fclose(fp); | |||
// put the result to b file | |||
fp = fopen("b.txt", "w"); | |||
if (fp == NULL) | |||
{ | |||
printf("无法创建加密后的文件\n"); | |||
return 1; | |||
} | |||
fputs(buffer, fp); | |||
fclose(fp); | |||
// open result file and read content | |||
fp = fopen("b.txt", "r"); | |||
if (fp == NULL) | |||
{ | |||
printf("无法打开加密后的文件\n"); | |||
return 1; | |||
} | |||
fgets(buffer, sizeof(buffer), fp); | |||
// print decrypt result to terminal | |||
decrypt(buffer, key); | |||
printf("解密后的字符串为:%s\n", buffer); | |||
fclose(fp); | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
== Day 93 == | == Day 93 == | ||