使用文件处理在C中加密消息

时间:2014-12-11 16:29:32

标签: c string file encryption

很高兴再次问你!

我想创建一个基本上读取一个名为message.txt的文件的程序,该文件会有一些带有消息的文本,让我们说:''你好我是一个程序' '然后加密该消息并将其放入名为encryptMessage.txt的文件中,此外它还会将文件key.txt中用于用户的密钥保存。现在这是我到目前为止所做的。我不知道如何让程序读取文件message.txt,将其显示在屏幕上,然后将其加密到文件中。任何建议?谢谢!

我打算使用fscanf,但我无法使用它,因为它是一条线,而不仅仅是一根弦。

请尽可能自己编写代码,以便将其与我目前所写的内容进行比较。我总是感谢您的反馈,谢谢!

#include <stdio.h>
#include <ctype.h>
#define MAXSIZE 100

int main(void)
{
    FILE *message;
    FILE *encryptMessage;
    FILE *key;

    message = fopen("message.txt", "r");
    encryptMessage = fopen("encryptMessage.txt", "w");
    key = fopen("key.txt", "w");

    if  ((encryptMessage == NULL) || (encryptMessage == NULL) || (encryptMessage == NULL))
    {
            printf("Error reading file!!!\n");
            return 1;
    }

    int userKey;
    char sentence[MAXSIZE];
    char q[MAXSIZE];
    int i = 0;

    printf("Input the text that you want to encrypt:\n> "); // These two lines are a test to see if I was able to encrypt the message, but this is not necessary. It should directly read the file called message.txt.
    fgets(sentence, 99, stdin);

   // printf("\nThe string that you wrote is:\n%s\n\n", sentence);

    printf("Input the key:\n");
    scanf("%d", &userKey);
    fprintf(key, "%d", userKey);

    //printf("\nThe key that you selected is: %d\n\n", userKey);

    for(i = 0; sentence[i] != '\0'; ++i)
    {
        if( ( isupper(sentence[i]) ) || ( islower(sentence[i]) ) )
        {
            q[i] = sentence[i] + (char)userKey;
        }
        else
        {
            q[i] = (sentence[i]);
        }
    }

    q[i] = '\0';
    printf("%s", q);
    fprintf(encryptMessage, "%s", q);

    fclose(encryptMessage);

    return 0;
}

1 个答案:

答案 0 :(得分:1)

要从message.txt读取一行,您需要使用fgets函数。

fgets(sentence, 99, stdin);

以上fgets(您的代码中有)从stdin读取,通常是键盘。要从文本文件中读取它,请使用

fgets(sentence, MAX_SIZE, message);

注意第二个参数的变化。如果要显示扫描的内容,请取消注释代码中的以下行

//printf("\nThe string that you wrote is:\n%s\n\n", sentence);

请勿忘记关闭(使用fclose)您使用后打开的所有FILE指针(使用fopen)。