如何使用文件将printf作为输入馈送到C程序?

如何使用文件将printf作为输入馈送到C程序?,c,linux,C,Linux,我知道你可以像这样在linux中输入C程序 me $ printf "some input" | ./someProgram me $ myProgram < myFile.txt 我想用文件中的输入做同样的事情,就像这样 me $ printf "some input" | ./someProgram me $ myProgram < myFile.txt 当我从这样的输入文件中填充变量时,程序的行为与预期的一样 "12345" //expect to fill var1

我知道你可以像这样在linux中输入C程序

me $ printf "some input" | ./someProgram
me $ myProgram < myFile.txt
我想用文件中的输入做同样的事情,就像这样

me $ printf "some input" | ./someProgram
me $ myProgram < myFile.txt
当我从这样的输入文件中填充变量时,程序的行为与预期的一样

"12345"  //expect to fill var1 w/ 12345 and it does
"12345"  //expect to fill var2 w/ 12345 and it does
printf "12345"  //expect to fill var1 w/ 12345 but it does not
printf "12345"  //expect to fill var2 w/ 12345 but it does not
但是当我的输入文件如下所示时,程序的行为与预期不符

"12345"  //expect to fill var1 w/ 12345 and it does
"12345"  //expect to fill var2 w/ 12345 and it does
printf "12345"  //expect to fill var1 w/ 12345 but it does not
printf "12345"  //expect to fill var2 w/ 12345 but it does not
显然,C语言解释print命令的方式与我将命令作为输入,然后通过管道将其传输到程序中的方式不同


发生什么事了?我该修什么?如何从文件中提供printf输入?

您缺少尾随的换行符


printf“12345\n”
应该可以正常工作

C根本不解释任何命令。当您使用
…<文件
要重定向
stdin
,该文件的内容将成为程序的输入-逐字记录。因此,如果文件包含

"12345"  
"abc"
printf "12345"
printf "12345"
,则
var1
将是
“12345”
(非
12345
),而
var2
将是
“abc”
(非
abc
)。类似地,如果文件包含

"12345"  
"abc"
printf "12345"
printf "12345"
,则
var1
将是
printf“12345”
var2
将是
printf“12345”

在我看来,你有两个选择:要么

12345
12345
在文件中,使用
/someProgram
,或者

printf "12345\n"
printf "12345\n"

在文件中使用
sh myFile.txt |/someProgram
(将myFile.txt的内容作为shell脚本执行)。

是否添加了\n终止行?@akh2103:您可能会发现