Difference between revisions of "Practice Everyday"

Jump to navigation Jump to search
1,878 bytes added ,  14:02, 29 May 2023
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 ==

Navigation menu