c - 为 stdin、stdout 和 stderr 定义和初始化数组

标签 c

下面是 K&R 的“The C Programming Language, Second Edition”一书中的一些代码的副本。我不知道这些 stdinstdoutstderr 是如何定义和初始化的。请帮我解释一下。

FILE _iob[OPEN_MAX] = {
    {0, (char *) 0, (char *) 0, _READ, 0},
    {0, (char *) 0, (char *) 0, _WRITE, 1},
    {0, (char *) 0, (char *) 0, _WRITE | _UNBUF, 2}
};

最佳答案

这段代码

FILE _iob[OPEN_MAX] = {
    {0, (char *) 0, (char *) 0, _READ, 0},
    {0, (char *) 0, (char *) 0, _WRITE, 1},
    {0, (char *) 0, (char *) 0, _WRITE | _UNBUF, 2}
};

只是一个代码示例,可用于初始化 stdinstdout特定实现示例>stderr 文件结构。

它只不过是如何初始化特定示例实现,与任何 Linux、glibc、Windows 或任何其他现实世界的 FILE 无关您将遇到的实现。

您发布的代码的每个数组元素都有五个值,因为这是实现示例在其 FILE 结构中使用的值。这些元素及其值仅特定于该示例实现。

关于c - 为 stdin、stdout 和 stderr 定义和初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46537841/

相关文章:

你能把字符串变成字符数组吗

c - 为什么我不能将二维数组传递给这个定义的函数?

从多个线程调用相同的函数

c - Arduino UNO LCD代码循环显示数据

C:从字符数组复制到 int

c++ - C/C++ 指针,ptr+1 = ptr +1 byte 还是 ptr+1*sizeof(pointer_type)?

c - 标准 I/O scanf 的问题

c - 在没有额外库的情况下解析 C 中的 PEM key

c - sync() 最多需要多少时间?

c - snprintf() 使用 newlib nano 打印垃圾 float