我的任务是在C
中创建一个读取标准输入内容然后打印它们的测试程序。
但我有点怀疑:什么是标准输入 ?
这是我在键盘上键入的内容吗? 这是我必须阅读的文件吗?
他们都?
standard output
也是如此:它是控制台吗? 一份文件?
C标准(例如C99或C11)定义了标准
标头应该预期的内容(在适当地#include
-d之后)。 请参见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)。 另见这个和那个 。
是的,标准输入(stdin)是从键盘输入的输入。 因此,可以是来自基本程序或命令行参数的用户输入的forms。 标准输出(stdout)是代码的输出,通常是终端窗口。 您几乎可以在任何地方输出代码,即文件,文本框,浏览器,但标准是终端的标准输出。
希望有所帮助。
通常,标准输入是键盘和标准输出屏幕。 但是,您可以使用“<”和“>”符号在命令行中重定向它。 像命令行一样
dir /s > "Tree.txt"
将dir命令的标准输出更改为指定的文件。 所以所有输出都转到该文件。 被调用的应用程序或命令本身通常不会注意到差异。
标准输出 (或stdout
)是指由Linux和其他类Unix操作系统中的命令行程序(即全文模式程序)生成的标准化数据流。
stdin是文件描述符0,你可以通过以下方式获取文件到stdin:
cat file |yourprog #or yourprog
同样对于stdout(文件描述符1)
yourprog | someotherprog #pipe your stdout to the stdin of another program yourprog > somefile #save stdout to a file yourprog >> somefile #append stdout to a file
和stderr(fd 2)
yourprog 2> errlogfile
如果你有一个程序接受文件但不处理stdin,你可以通过这样做使用上述格式(假设输入文件参数为myprog -f /dev/stdin
) myprog -f /dev/stdin
//and a horrible example of how not to read from stdin and write to stdout char buf[4096]; while(write(1,buf,read(0,buf,4096)));
以上就是c/c++开发分享什么是“标准输入”?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/545841.html