0

这就是我所拥有的”

#!/bin/bash
MAX=3

for((ctr = 0;ctr < MAX; ++ctr))
do
    ./make.o  > out$ctr.txt
    output$ctr.txt 
done

所以我想将 make.o 的输出放入 out$ctr.txt 并在我的 make.o 中调用 cin,我可以将 output$ctr.txt 作为输入吗?我宁愿不使用输入重定向,因为我必须重写程序。

编辑:我不想使用 < 因为它会给我文件 output$ctr.txt 的内容,我确实想要文件的实际名称而不是内容

4

3 回答 3

1

你的意思是这样的

./make.o < output$ctr.txt  > out$ctr.txt

编辑:如果你想要这个名字,那么就这样做:

./make.o output$ctr.txt  > out$ctr.txt

或者可能是这个echo名称,以便可以从 C++ 中读取cin

echo output$ctr.txt | ./make.o  > out$ctr.txt
于 2013-02-26T20:03:21.100 回答
0

但你真正想要的是:

./make.o output$ctr.txt >out$ctr.txt

whereoutput$ctr.txt是程序的命令行参数

假设一个 C++ 程序,因为你提到cin,你处理命令行参数是这样的:

int main(int argc, char *argv[])
{
    if (argc < 2) {
        // argv[0] usually contains the program name
        std::cerr << "missing argument\n"
                  << "Syntax: " << argv[0] << " input-file\n";
        return -1;
    }

    char *input = argv[1]; // = "output$ctr.txt"
    // ...
}

第一个猜测

听起来你只是想要;

./make.o  >out$ctr.txt <output$ctr.txt

>FILE *stdout重定向与和关联的文件描述符 STDOUT_FILENO std::cout

<FILE *stdin重定向与和关联的文件描述符 STDIN_FILENO std::cin

于 2013-02-26T20:04:03.780 回答
0

只是关于你循环的评论,另一种更简单的编写方法是

#!/bin/bash

for i in {0..2}
do
    echo $i
done
于 2013-02-26T20:25:31.060 回答