读取文件而不是将其作为参数传递

时间:2016-02-16 15:20:36

标签: c++ c linux

我有一个可执行程序,它只接受两个参数"文件的打开命令./file和另一个参数"。我想知道如何设置一个命令,使文件读取文件而不将其作为参数传递给linux。我没有该程序的源代码,但我在互联网上发现了这个C代码,我认为它可能类似。

#include <stdio.h>

int main ( int argc, char *argv[] )
{
    if ( argc != 2 ) /* argc should be 2 for correct execution */
    {
        /* We print argv[0] assuming it is the program name */
        printf( "usage: %s filename", argv[0] );
    }
    else 
    {
        // We assume argv[1] is a filename to open
        FILE *file = fopen( argv[1], "r" );

        /* fopen returns 0, the NULL pointer, on failure */
        if ( file == 0 )
        {
            printf( "Could not open file\n" );
        }
        else 
        {
            int x;
            /* read one character at a time from file, stopping at EOF, which
               indicates the end of the file.  Note that the idiom of "assign
               to a variable, check the value" used below works because
               the assignment statement evaluates to the value assigned. */
            while  ( ( x = fgetc( file ) ) != EOF )
            {
                printf( "%c", x );
            }
            fclose( file );
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您可以将命令放入文件,然后将该文件传输到您的程序中。

./my_program.exe < my_commands.txt

操作系统将通过std::cin传递文件。所以当你执行

std::string text_line;
std::getline(std::cin, text_line);

输入将来自&#34; my_commands.txt&#34;或者什么文件被重定向到您的程序。