尝试将 str 写入具有特殊文件名 "con" 的文件,但它被打印到标准输出

Try to write str to file with special file name "con", but it's printed to stdout

FILE *fp = fopen("./con", "w");
char *s = "hello!";
fwrite(s, sizeof(char), strlen(s), fp);
fclose(fp);
return 0;

如果我的文件名是 "con",那么 fwrite() 将像 printf() 一样工作。

它是如何工作的?

Windows/DOS 有多个 reserved filenames 包括 CON、PRN、AUX、CLOCK$、NUL COM1、COM2、COM3、COM4 LPT1、LPT2、LPT3、LPT4 等。

CON 是标准控制台(输出),所以这就是数据的去向。

致谢:@BLUEPIXY @Joachim Pileborg