如何使用文件将printf作为输入馈送到C程序?
我知道你可以像这样在linux中输入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
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:您可能会发现