我的任务是创建一个测试程序C
,读取标准输入的内容,然后打印它们.
但我有点怀疑:什么是标准输入?
这是我在键盘上键入的内容吗?这是我必须阅读的文件吗?
他们都?
同样的问题是standard output
:它是控制台吗?一份文件?
Bas*_*tch 10
C标准(例如C99或C11)定义了标准<stdio.h>
头部应该预期的内容(在适当地使用之后#include
).请参见stdio(3)手册页.然后,你有stdin
和stdout
和stderr
文件句柄(指点一下FILE
这是一个抽象数据类型).
stdin
与某些设备(例如键盘)相关的事实是特定于实现的.
你可以(但这是不道德和/或效率低下)实施C标准,例如人类奴隶的房间(如果你使用效率低下的付费工人,这是不道德的),而不是使用计算机.通常,计算机通过某些操作系统的帮助为您提供一些C标准的实现.
你可能想知道,在你的C程序中,如果stdin
是"键盘"或从某个"文件"重定向.不幸的是,AFAIK,没有C99标准的方式来了解这一点.
正如你提到的,stdin
,stdout
并且stderr
应该在你的程序可在启动时(即进入后main
....).因此,除非你fclose
的stdin
数据流,你可以读它(用getchar
,scanf
,getline
,fgets
,fscanf
没有任何事先护理(所以你不需要......和朋友)fopen
它自己).
在Linux或大多数Posix系统上,您可以使用近似值isatty(STDIN_FILENO)
- 请参阅isatty(3)以获取更多信息 - 测试stdin
"是""键盘"(通过测试它是否为某个tty).另见这个和那个.
归档时间: |
|
查看次数: |
18346 次 |
最近记录: |