c/c++开发分享什么是“标准输入”?

我的任务是在C中创建一个读取标准输入内容然后打印它们的测试程序。

但我有点怀疑:什么是标准输入

这是我在键盘上键入的内容吗? 这是我必须阅读的文件吗?

他们都?

standard output也是如此:它是控制台吗? 一份文件?

    C标准(例如C99或C11)定义了标准标头应该预期的内容(在适当地#include -d之后)。 请参见stdio(3)手册页。 然后你有stdinstdoutstderr文件句柄(指向一些FILE ,这是一个抽象数据类型)。

    stdin与某些设备(例如键盘)相关的事实是特定于实现的

    你可以(但那是不道德和/或效率低下)实施C标准,例如人类奴隶的房间(如果你使用效率低下的付费工人,这是不道德的),而不是使用计算机。 通常,计算机通过某些操作系统的帮助为您提供一些C标准的实现。

    您可能想知道,在您的C程序中, stdin是“键盘”还是从某个“文件”重定向。 不幸的是,AFAIK,没有C99标准的方式来了解这一点。

    正如您所提到的, stdinstdoutstderr应该在启动时在您的程序中可用(即在进入main ….)。 因此,除非您fclose stdin流,否则您可以在没有任何事先注意的情况下阅读它(使用getcharscanfgetlinefgetsfscanf ……和朋友)(因此您不需要自己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/stdinmyprog -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++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545841.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注