【发布时间】:2012-08-17 07:53:32
【问题描述】:
我编写了一个程序来通过 XOR 加密给定消息。它有效,但它并没有结束。这是代码。(我创建了3个文件):
加密.h:
void encrypt(char *message);
message_hider.c:
#include <stdio.h>
#include "encrypt.h"
int main() {
char msg[80];
while (fgets(msg, 80, stdin)){
encrypt(msg);
printf("%s", msg);
}
return 0;
}
加密.c:
#include "encrypt.h"
void encrypt(char *message) {
while (*message) {
*message++ ^= 0x1f;
}
}
正如我上面提到的,它有效。但我无法阻止它。当我按下 Ctrl+D 停止它(在 cmd 中)它也会对其进行加密。(我需要在加密消息后停止此代码)。请解释一下这个案例。
【问题讨论】:
-
正如你所写。你能解释一下你希望这段代码在什么情况下停止吗?
-
cmd 不理解 Ctrl+D,使用文件结束条件(即写入文件并将其提供给 stdin 上的程序:
prog < file)。而且你不加密,你混淆(一点)。顺便说一句,不要指望 printf 能够实际显示混淆文本。 -
你使用了更糟糕的主题,请修改为有意义。
-
@fork0 (1) Windows
cmd将 Ctrl+Z 识别为 EOF; (2) 这确实是一种使用简单替换密码的加密方式,就像ROT13 is a substitution cipher 一样。 -
Brad 编辑的行没问题,但它也加密了返回字符。
标签: c