Ctrl + D不会阻止应用程序在命令窗口中执行

时间:2012-08-17 07:53:33

标签: c

我写了一个程序来通过XOR加密给定的消息。它有效,但它没有结束。这是代码。(我创建了3个文件):

encrypt.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;
}

encrypt.c:

#include "encrypt.h"

void encrypt(char *message) {
  while (*message) {
    *message++ ^= 0x1f;
  }
}

正如我上面提到的,它有效。但我无法阻止它。当我按下Ctrl + D来停止它(在cmd中)它也加密它。(我需要在加密消息后停止此代码)。请解释一下这个案子。

4 个答案:

答案 0 :(得分:5)

  

按Ctrl + D停止它(在cmd中)

如果那是来自Windows的cmd,您可能需要Ctrl+Z

答案 1 :(得分:4)

Ctrl-D 用于Unix系统上的控制台EOF。

Ctrl-Z 用于Windows系统上的控制台EOF。

答案 2 :(得分:1)

添加退出条件:

if( c < 0x20 ) break;

您可能还需要添加其他检查以支持退格而不对其进行编码...

http://www.asciitable.com/

答案 3 :(得分:0)

跑步

  $> kill -l

查看Linux中的信号列表。你不会在那里找到SIGKILL(Ctrl + D)信号:(

Ctrl + D是Linux中的SIGKILL(0)信号,未在任何地方记录。 Ctrl + Z适用于Windows,它告诉EOF,我们需要按“Enter”关闭。