用C写标准输出是什么意思?

用C写标准输出是什么意思?,c,unix,stdout,C,Unix,Stdout,写入“标准输出”的程序是否写入文件?屏幕?我不明白写入stdout意味着什么。这意味着您正在会话的主输出设备上打印输出。。。不管是什么。用户的控制台、tty会话、文件或谁知道是什么。该设备可能是什么取决于程序如何运行以及从何处运行 以下命令将写入标准输出设备(stdout) 本质上,这只是另一种方式 fprintf( stdout, "hello world\n" ); 在这种情况下,stdout是指向表示应用程序默认输出设备的文件流的指针。你也可以使用 fprintf( stderr, "t

写入“标准输出”的程序是否写入文件?屏幕?我不明白写入stdout意味着什么。

这意味着您正在会话的主输出设备上打印输出。。。不管是什么。用户的控制台、tty会话、文件或谁知道是什么。该设备可能是什么取决于程序如何运行以及从何处运行

以下命令将写入标准输出设备(stdout)

本质上,这只是另一种方式

fprintf( stdout, "hello world\n" );
在这种情况下,
stdout
是指向表示应用程序默认输出设备的
文件
流的指针。你也可以使用

fprintf( stderr, "that didn't go well\n" );

在这种情况下,您将向应用程序的标准错误输出设备发送输出,该设备可能与
stdout
相同,也可能与
stdout
不同,
stderr
是指向表示错误消息默认输出设备的
文件流的指针。

stdout
是UNIX中的标准输出流。看见
当在终端中运行时,您将在终端中看到写入标准输出流的数据,您可以根据自己的选择重定向它。

标准输出流,它是一个由操作系统本身提供给您的程序的流。它从一开始就可以与
stdin
stderr
一起用于您的程序


它们指向(或来自)的东西可以是任何东西,实际上流只是为您的程序提供了一个对象,可以用作发送或检索数据的接口。默认情况下,它通常是终端,但它可以重定向到任何您想要的地方:文件、管道到另一个进程等等。

stdout是标准的输出文件流。显然,它的第一个默认输出指针是屏幕,但是您可以根据需要将其指向文件

请阅读:

C++与C非常相似,但都是面向对象的。

这取决于具体情况

当您承诺将输出发送到
stdout
时,基本上是由用户决定输出应该发送到哪里

如果使用
printf(…)
(或等效的
fprintf(stdout,…)
),则将输出发送到
stdout
,但实际结果可能取决于我调用程序的方式

如果我像这样从控制台启动您的程序,我将在控制台上看到输出:

$ prog
Hello, World! # <-- output is here on my console
但由于shell的重定向功能,我现在有了一个文件“hello.txt”,里面有文本“hello,World!”

谁知道呢?我甚至可以连接其他设备,输出就可以到达那里。关键是,当您决定打印到stdout时(例如,通过使用
printf()
),您将不知道它将去哪里,直到您看到该过程是如何启动或使用的

请注意,
stdout
流是,为了确保输出被实际打印,而不是仅仅停留在缓冲区中等待写入,必须通过使用
\n
结束
printf
语句来刷新缓冲区

例:

或者类似,或者必须调用
fflush(stdout)printf
调用后,执行code>

例:


阅读这里的更多内容:

是否有C语言中写入stdout命令的示例?是否有一个简单的printf语句写入标准输出?使用write()写入文件怎么样?
printf
默认情况下在
stdout
上写入,如果要写入特定流,应使用
fprintf
,它接受
文件*
作为目标流。它也是“std”输出,因为它被称为“标准”输出。与stdin或“标准输入”相反,stderr表示“标准”错误。我写了一篇关于如何使用
fflush(stdout)
强制刷新缓冲区的附录:这意味着它写入文件描述符1
stdout
就像一个常量变量名,每个人都使用这个名称,因此您不必记住实际的FD数是1。例如,当我第一次写这篇文章时,我认为它是FD0…:)
$ prog
Hello, World! # <-- output is here on my console
$ prog > hello.txt
printf("hello world\n");
printf("hello world"); 
printf("\n");
printf("hello world"); 
fflush(stdout);