在Unix命令行,我需要使用輸入重定向到指定輸入文件:閱讀整數用C
./a.out < filename
下面是我的源代碼:
int main(int argc, char *argv[]) {
char fileName[30];
fgets(fileName, sizeof fileName, stdin);
printf("%s\n", fileName);
}
該程序打印一個整數而不是文件名。如果我使用scanf("%s", fileName);
我得到了相同的結果我的谷歌福已經失敗了我。我究竟做錯了什麼?
編輯:需要使用輸入重定向(具體爲<
),所以命令行參數不是一個選項。但是,我不需要真正知道文件名,我只需要從文件中讀取換行符分隔的整數。看來我正在問錯誤的問題。
也許「文件名」恰巧從只有一個數字的行開始? – wildplasser
您是否正在嘗試使用stdin讀取名爲'filename'的文件的內容或(2)嘗試讀取文件的名稱,然後打開()並使用文件I/O讀取該文件的名稱? –
@nos這是我的一個誤解。我認爲'<'會讀取命令行的其餘部分作爲標準輸入,此時我將不得不打開文件並從中讀取文件。但是,'<'運算符打開文件並將其內容視爲輸入到stdin中。我過分複雜化了這個問題。 –