Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 传递命令行参数的困难_Linux - Fatal编程技术网

Linux 传递命令行参数的困难

Linux 传递命令行参数的困难,linux,Linux,我想通过使用cat命令读取另一个文件,将命令行传递给我的c程序,如下所示: cat data | ./file 文件数据的内容如下所示: abc def ghi jkl mno pqr stu vwx yz 文件.c的代码是 #include <stdio.h> int main( int args, char * argv[] ) { int i = 0; for( i; i < args; i++ ) { printf(

我想通过使用cat命令读取另一个文件,将命令行传递给我的c程序,如下所示:

cat data | ./file
文件数据的内容如下所示:

abc def ghi jkl mno pqr stu vwx yz
文件.c的代码是

#include <stdio.h>

int main( int args, char * argv[] )
{
     int i = 0;
     for( i; i < args; i++ )
     {
         printf(argv[i]);
         printf("\n");
     }
}

它只显示文件名,不显示a内容。我做得对吗

您应该尝试以下方法:

./file $(cat a)

您应该尝试以下方法:

./file $(cat a)

管道被视为
STDIN
fd,而不是命令行参数

您可能需要
cat a | xargs./file

leetom@leetoms-MBP:~$ cat aa.txt
aaa bbb cc
leetom@leetoms-MBP:~$ cat aa.txt | xargs ./a.out
./a.out
aaa
bbb
cc

管道被视为
STDIN
fd,而不是命令行参数

您可能需要
cat a | xargs./file

leetom@leetoms-MBP:~$ cat aa.txt
aaa bbb cc
leetom@leetoms-MBP:~$ cat aa.txt | xargs ./a.out
./a.out
aaa
bbb
cc

您需要使用
cin
从标准输入流读取管道输入,如中所示。您的文件将成为:

#include <iostream>
#include <string>

int main( int args, char ** argv )
{

    std::string lineInput;
    while (std::cin >> lineInput) {
        std::cout << lineInput << std::endl;
    }

}

您需要使用
cin
从标准输入流读取管道输入,如中所示。您的文件将成为:

#include <iostream>
#include <string>

int main( int args, char ** argv )
{

    std::string lineInput;
    while (std::cin >> lineInput) {
        std::cout << lineInput << std::endl;
    }

}

这样,它工作得很好。但是我想用上面提到的方法来做。这样做,效果很好。但是我想用上面提到的方法。