2016-03-22 16 views
0

我需要運行程序並將文件傳遞給它。寫傳遞一個文件的程序讓它讀取

./my_program input.txt 

它工作時,我需要它,而採用這種格式

./my_program < input.txt 

運行,但它拋出一個分段錯誤。

這不是我確切的代碼,但這是我認爲最重要的想法。

int main(int argc, char **argv){ 
    FILE *f = fopen(argv[1], "r"); 
    char *input; 
    input = new char[1000]; 
    if (f == NULL) { 
     std::cout << "file not found" << std::endl; 
    } 
    else { 
     std::cout << "found file" << std::endl; 
    } 
    fread(input, 1000, 1, f); 
    //...do stuff with it...// 
    return 0; 
} 

所以基本上,我怎麼圍繞「<」扔分割故障得到,當它正常工作的其他方式?

+2

這不是「<」拋出分割故障。這是'argv [1]'。 –

+0

@ R.MartinhoFernandes所以使用argv [2]?沒有'<'argv [1]不扔它。 – sgriffin

+2

運行'./my_program Kevin

回答

0

你不需要考慮文件。只需編寫代碼就好像用戶輸入input.txt文件的內容一樣。

'<'將specized文件的內容重定向到標準輸入。

希望這解釋了更多: http://wiki.bash-hackers.org/howto/redirection_tutorial

+0

所以,使用std :: cin將工作相同,'<'重定向輸入,使它不是從鍵盤是我得到?是的,現在這一切都有意義,並且有效。謝謝。 – sgriffin

相關問題