我想知道如何更改我的程序當前流? 我的意思是我想從文件中得到我的輸入。在C語言中更改流
Q
在C語言中更改流
1
A
回答
5
假設你正在談論標準CI/O流由FILE *對象來表示stdin和stdout,你可以用freopen():
/* Change stdin to read from the given file. */
freopen("funny-input.txt", "rt", stdin);
0
功能freopen()
用於已經改變的分配打開文件流。它採用C89標準C--儘管鏈接符合POSIX標準。
1
也許你有這樣的程序:
#include <stdio>
int main(int ac, char **av) {
int i;
if(scanf("%d", &i) == 1)
printf("Answer: %d\n", i);
else
printf("No answer\n");
return 0;
}
,並要「改變你的當前流」。除了其他地方列出的「freopen」選項之外,您可能還想重定向您的輸入。如果你使用shell(UNIX)或控制檯窗口(Windows)中調用程序:
C:\> MYPROG.EXE
相反,調用它正是如此
C:\> MYPROG.EXE < INPUTFILE.TXT
在這種情況下,所有輸入到stdin
(例如,scanf
,getchar
等)將來自名爲INPUTFILE.TXT
的文件,而不是您的鍵盤。
或者,你可以在你的程序中打開文件:
#include <stdio>
int main(int ac, char **av) {
FILE *input;
int i;
input = fopen("INPUTFILE.TXT", "r");
if(!input) {
printf("No input file\n");
return 1;
}
if(fscanf(input, "%d", &i) == 1)
printf("Answer: %d\n", i);
else
printf("No answer\n");
return 0;
}
注意,你已經打開了新的輸入文件,並使用所產生的手柄在後續調用。另請注意,您必須使用稍微不同的呼叫才能從指定的句柄而不是stdin
中讀取。例如,您必須使用fscanf
而不是scanf
,getc
而不是getchar
和fgets
而不是gets
。
相關問題
- 1. 更改語言在C#
- 2. 更改系統語言C#
- 3. 如何更改C#語言
- 4. 在TinyMCE中更改語言
- 5. 在AlertDialog中更改語言
- 6. 在J2ME中更改語言
- 7. 在WooCommerce中更改語言
- 8. 更改書寫語言的Windows在C#
- 9. 在C#winform運行時更改語言
- 10. 更改語言
- 11. 更改語言
- 12. 更改語言
- 13. 在C語言編程語言中更改菜單中的#define值
- 14. 更改jqGrid中的語言
- 15. 在C++中更改語言時代碼不會更新QT GUI
- 16. Django:i18n - 更改語言
- 17. Yii2 - 更改語言
- 18. TinyMCE更改語言
- 19. FolderBrowserDialog更改語言
- 20. 更改語言5
- 21. Ajax更改語言
- 22. NSSpeechSynthesizer更改語言
- 23. Android更改語言
- 24. 更改Behat語言
- 25. PhantomJS C#如何更改默認語言
- 26. Android - 更改語言環境(語言)
- 27. 爲什麼語言改變爲英語在語言欄在C#
- 28. C#語言更新
- 29. 在PHP中更改語言環境日期語言
- 30. 在客戶端編程語言中更改鍵盤語言
你是什麼意思'流' - stdio/out/err?或者是其他東西? – Rup 2011-03-03 15:24:10
請提供您想要做什麼的更多細節。這個問題太模糊不清,很可能會被解決。 – 2011-03-03 15:25:28