C程序不接受分析输入

  • 本文关键字:程序 不接受 c bash
  • 更新时间 :
  • 英文 :


嗨,我有一个C程序,该程序占两个数字并添加它们。非常简单,只是在这里学习C。但是,我有一个CSV文件,其中包含两个列,这些列是用bash脚本解析的,并且将其输送到C程序中不会产生结果。例如,如果i 手动键入:

$ ./adder 1 2
$ 3

然后我的bash程序解析如下

$ ./parser test.csv 
$ 1 2

目前CSV文件中只有一行。即与以前的C文件完全相同的输入

然后做:

$ ./parser | ./ adder
$

我没有结果。

这里发生了什么?

使用$ ./adder 1 2,您将1 2作为命令行参数传递给程序,该程序可在argv[]中使用。

但是使用$ ./parser | ./ adderparser的输出作为输入作为adderadder尝试从标准输入-stdin(使用scanfgets等)读取,它将作为输入。

>> >

如果您的程序没有从标准输入中读取,则不会得到这些。

如果您想使它起作用,则在Linux上使用xargs

 $ ./parser | xargs ./adder

看起来ADDER接受命令行中的数字,在管道中,您尝试在标准输入中为数字提供数字。您应该能够通过Xargs实现自己想要的东西:

./parser | xargs ./adder

您应该尝试使用 xargs将一个程序的输出读取到下一个程序的命令行中。

管道重定向 stdout to stdin 。STDIN与在命令行中输入您的论点不同。Xargs允许您将stdin(由管道创建)转换为命令行参数。尝试以下操作:

./parser | xargs ./adder

您可以在心理上读这一点:"解析器的输出用作加法器的参数。"

相关内容

  • 没有找到相关文章

最新更新