这个程序让我很头疼,但我正在解决它!
我想创建一个程序,它基本上读取一个名为 message.txt 的文件,其中包含一些带有消息的文本,比方说:“你好,我是一个程序”,然后加密该消息并将其放入文件中名为 encryptMessage.txt,另外它会将用户使用的 key 保存在文件 key.txt 中。这就是我到目前为止所做的。
这部分已经完成了。我只需要做最后一件事。
文件 message.txt 有多于一行。例如:
hello I like programming
this is a test
to see if this program
can read and encrypt many lines
我希望程序读取所有这些行,然后加密它们并将它们保存在 encryptMessage.txt 中,如下所示(假设 key 是 3):
khoor L olnh surjudpplqj
wklv lv d whvw
wr vhh wklv surjudp
fdq uhdg dqg hgfu|sw pdq| olqhv
但是,我不知道如何让它发挥作用。我知道我需要使用循环和 !feof 函数或类似的函数。但我真的不知道如何实现,你有什么想法吗?非常感谢!
#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 ((message == NULL) || (encryptMessage == NULL) || (key == 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> ");
fgets(sentence, 99, message);
// 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);
fclose(key);
fclose(message);
return 0;
}
最佳答案
以下是读取整个文件的方法:
while(fgets(sentence, MAXSIZE - 1, message)) {
// do something with sentence
}
这里是修改后的源代码:http://pastebin.com/KxAe9KcS
关于c - 读取文件然后重写它。 C 密码学程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27429421/