很高兴再次问你!
我想创建一个基本上读取一个名为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;
}
答案 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
)。