我想知道如何更改我的程序当前流? 我的意思是我想从文件中得到我的输入。在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. 在J2ME中更改语言
- 3. 在WooCommerce中更改语言
- 4. 更改书写语言的Windows在C#
- 5. 更改语言
- 6. 更改语言
- 7. 更改jqGrid中的语言
- 8. Ajax更改语言
- 9. FolderBrowserDialog更改语言
- 10. 更改语言5
- 11. Yii2 - 更改语言
- 12. 更改Behat语言
- 13. Android更改语言
- 14. Django:i18n - 更改语言
- 15. C#语言更新
- 16. 作为设备语言更改更改应用程序语言
- 17. 更改应用语言更改的文本框输入语言
- 18. 防止语言环境更改后的应用语言更改
- 19. 如何在wordpress中更改语言
- 20. 在Docker中更改Ubuntu语言环境
- 21. 如何在ew中更改语言:calendarpopup?
- 22. 在应用程序中更改语言
- 23. MVVMCROSS在iOS中更改语言
- 24. Laravel:如何在selectMonth中更改语言?
- 25. 在Kendo UI中更改语言
- 26. 无法在Laravel中更改语言
- 27. 在Unity 5中更改语言(DateTime.Now.DayOfWeek)
- 28. 在iOS 9中强制更改语言
- 29. 如何在C#或VB中更改虚拟键盘的语言?
- 30. 通过在c语言中减去ASCII码来更改字符
你是什么意思'流' - stdio/out/err?或者是其他东西? – Rup 2011-03-03 15:24:10
请提供您想要做什么的更多细节。这个问题太模糊不清,很可能会被解决。 – 2011-03-03 15:25:28