标准输入是否是一个指针,正如我在 fgets() 中看到的那样。
我使用了“0”,因为我们错误地用于标准输入的读取或写入,并且在 fgets 期间出现了段错误。
是STDIN宏和0是一样的。
是stdin是一个文件指针。请解释一下
标准输入是FILE *来自stdio.h
STDIN_FILENO == fileno(stdin)
STDIN_FILENOis in unistd.hand 用于类似的函数write,而作为 File * 的 stdin 用于类似的 stdio 函数printf
stdin是一个扩展为类型表达式的宏FILE *(所以,是的,它是一个指针)。它的值是未指定的,但它需要指向一个具体的对象,所以它肯定是非NULL的。
0是一个整数常量,在指针上下文中使用时会转换为 NULL 指针。随之而来的是stdin != 0。
STDIN不是由标准 C 库定义的。
你可能听说过,对应的OS级文件描述符stdin的值为0,这是真的,但是文件描述符和FILE对象不是一回事,不能互换使用。(如果你在一个 Unixy 系统上,找个时间读一读/usr/include/stdio.h。它“只是”更多的 C。通常那里有一个FILE对象的具体定义,作为一个相当复杂的struct,即使这不是标准所要求的。)