2014-11-24 27 views
1

嗯,我認爲這個答案就在那裏,但是人們在那裏發佈了大量的代碼。我找不到實際執行的地方。我正在使用代碼塊,我將文件名傳遞給main。但是當我點擊運行時,沒有傳入的文件名。如何在Codeblocks中傳入文件名?我使用cmd promt還是什麼?我想通過input.txt,但我無法弄清楚。現在要阻止它崩潰,我只是將它默認爲input.txt。運行一個程序,我將文件名傳遞到主

nfile = fopen(argv[1], "r+"); 

    // Check for file open 
    if (nfile == NULL) { 
     nfile = fopen("input.txt", "r+"); 

     printf("FILE NAME: %s argv\n", argv); 

     if (nfile == NULL) { 
      printf("Failed to open file. Must have file name (input.txt)\n"); 
      return -1; 
     } 
    } 
+0

可能重複[如何利用命令行參數的碼塊10.05?(http://stackoverflow.com/questions/11888528/how-to -take-command-line-argument-in-codeblock-10-05) – 2014-11-25 17:08:30

回答

0

看看你的簽名main程序。它應該看起來像int main(int argc, char* argv[])argc參數保存包含程序文件名的參數個數。 argv是一個包含參數的以null結尾的字符串數組。第二個(索引1)(如果存在)可能是您要查找的內容。你到那裏去了什麼?

它看起來像你已經在你的代碼中使用這些變量......你是否得到了編譯錯誤?

要將命令行參數插入CodeBlocks中,您需要從菜單訪問Project > Set programs' arguments...

+0

不,他們很好。我明白了,當我點擊運行時,我不知道如何將字符串「input.txt」發送給main。 – user2990336 2014-11-24 20:10:45

+0

哦。如果你點擊「運行」,你可能會從IDE中調用它。查看您的項目設置並查找命令行參數屬性。你在使用哪個IDE? – 2014-11-24 20:14:57

+0

沒關係。你說CodeBlocks。編輯答案。 – 2014-11-24 20:16:03

1
int main(int argc, char*argv[]) 

^這應該是函數頭並使用它,您必須使用命令提示符傳遞參數。

例如:如果您使用gcc編譯程序。 然後使用gcc yourprogram.c

在使用./a.out input.txt後運行該代碼的

+0

感謝您的幫助。我仍然無法弄清楚。無論如何,它似乎工作?如果文件名被傳入main,這個代碼是否工作? – user2990336 2014-11-24 20:15:44

相關問題