【问题标题】:int main(int argc, char **argv ) with < stdin > stdout in c [closed]int main(int argc, char **argv) 与 < stdin > stdout in c [关闭]
【发布时间】:2016-02-13 22:49:49
【问题描述】:

如果我想使用一个 exe 文件和这样的命令:

1.exe < input.txt > output.txt

在C程序中输入文件名,用于修改输入文件和输出文件,可以吗?

我已尝试使用 1.exe input.txt output.txt 它有效。

但是,当我将其更改为1.exe &lt; input.txt &gt; output.txt时,它无法打开文件。

甚至,我增加了指针,argv[1]argv[2]argv[2]argv[4]

那么,1.exe &lt; input.txt &gt; output.txt 命令应该怎么做呢?

【问题讨论】:

  • 我不使用.exe 文件。你的观点是什么?
  • 我不明白。 '我已经尝试过 1.exe input.txt output.txt 它可以工作' - 你为什么不停在那里?
  • 这不是一个真正的 [c] 问题。您提供的两个命令对shell 有不同的含义。尽管您可以编写在这两种情况下表现出相同行为的程序,但没有理由期望免费获得它。既不是 C 语言,也不是任何其他语言。
  • &lt; input.txt &gt; output.txt 指定的重定向在程序启动之前由 shell 处理。您的程序在argv 中看不到这些文件名,但它可以通过stdinstdout 访问打开的文件。有关重定向的更多详细信息,请阅读您的 shell 的文档。
  • 也许你想要1.exe "&lt; input.txt" "&gt; output.txt"

标签: c stdin argv


【解决方案1】:

当您这样做时:1.exe input.txt output.txt,它将 input.txt 作为第一个参数传递给 1.exe,并将 output.txt 作为第二个参数传递。

这与1.exe &lt; input.txt &gt; output.txt不同,后者将input.txt的内容放在stdin,将stdout写入output.txt。

程序 1.exe 期望获得随后打开和操作的文件的名称。它不期望从标准输入读取并写入标准输出。如果这就是您想要做的,您需要修改程序以使其做到这一点。

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2015-08-12
    • 2011-07-08
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    相关资源
    最近更新 更多