【问题标题】:Sending arbitrary bytes to fgets from stdin [closed]从标准输入向 fgets 发送任意字节 [关闭]
【发布时间】:2016-07-11 03:59:05
【问题描述】:

我正在使用 fgets(user_input, input_len, stdin) 提示用户提供的字符串。例如,如何将十六进制 \x04 表示的字节发送给程序?

【问题讨论】:

  • 这取决于您的终端(或您正在使用的其他输入系统)。
  • 你有没有0x04是control-D是EOF的问题?
  • @SteveSummit 0x04 在ascii表中描述为EOT,这是各种串行传输协议用作传输结束的字符。然而,这与控制台上的 ctrl+d 无关,这在许多系统上会导致输入流出现 EOF。
  • @Ctx 当然,但是如果我想将十六进制 \x04 表示的字节发送到我的程序,我只需键入 control-D,除非我小心,否则我会得到 EOF,这可能是user6105782的问题。

标签: c bash fgets


【解决方案1】:

你可以的

$ echo -n -e '\x04' | your-program

注意:在 POSIX echo 上,只允许使用八进制值。

【讨论】:

    【解决方案2】:

    如果您可以将所需的字节放入文件中,则可以运行

    your-program < file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 2013-09-12
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多