2016-02-16 211 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

相關問題