2016-02-16 121 views
-1

我有一个可执行程序,它只接受两个参数“文件的打开命令./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); 
     } 
    } 
} 
+0

'$ alias executable ='executable hidden_​​file'' – pmg

+0

'$ ./my_program.out

回答

2

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

./my_program.exe < my_commands.txt 

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

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

输入将来自“my_commands.txt”或什么文件被重定向到您的程序。

+0

问题是程序只接受一个参数,所以从一个文件读取会给我一个错误,反正有读取该文件并将其中的所有内容作为一个参数传递? – adib

+1

重定向输入不涉及程序参数。阅读文件时出现错误是另一个问题的主题(搜索示例后)。 –

+0

有反正我可以联系你,我有一个问题,我想问,但我认为这是离题的这个网站“这涉及到这个问题的主题” – adib

相关问题