2016-03-11 28 views
1

我需要訪問命令行以下列方式提供給程序的文件:./myProgram < filename配管的命令行文件用C

我想你可以用命令行參數(ARGV和ARGC做到這一點),但現在認識到情況並非如此。我只是想知道這個文件輸入到哪裏(名字或其他),所以我可以訪問它。

在此先感謝!

+0

文件應該能夠從標準輸入中讀取,除非您使用特殊的外殼。 – MikeCAT

+0

那麼'FILE * input = stdin'的一些東西呢? – PresumablyZach

+1

只需編寫程序即可從'stdin'中讀取。您無需關心stdin輸入是否來自某人打字或從文件重定向。也就是說,你可以使用任何能夠從標準輸入讀取的函數。例如'scanf'或'fgets(..,..,stdin)'等。 – kaylum

回答

0

如果你使用的是unix shell(zsh,bash等)並執行類似./myProgram <filename的操作,程序將不會收到argv中的<filename數組。相反,shell會用<解析該部分,並重定向該程序的輸入,以使其來自文件filename

更多關於I/O重定向here

所以,你寫的完全一樣,如果你在讀從stdin(因爲你從標準輸入讀取):

#include <stdio.h> 
int main() 
{ 
    char str[200]; 
    int i; 
    scanf("%s", str); 
    scanf("%d", &i); 
    printf("%s %d\n", str, i); 
}