putc需要stdout,vs puts
C历史问题在这里。 为什么C函数putc
需要第二个参数,如
putc( 'c', stdout ) ;
虽然看跌哦这么方便
puts( "a string" ) ;
msvc ++中有一个函数
putchar( 'c' ) ;
这可能是人们期望putc
工作的方式。 我认为putc
的第二个参数是能够将putc
定向到一个文件,但是有一个函数fputc
。
int putc ( int character, FILE * stream );
将字符写入流并推进位置指示器。
所以它比putchar
更通用
其他function可以基于此例如
#define putchar(c) putc((c),stdout)
根据Kernighan的书, putc
等同于fputc
但putc
可以实现为宏,putc 可能不得不多次评估它的流参数 。
我已经读过,据说两者都存在向后兼容性,但不确定这是否有效
这样您就可以选择输出到不同的流,例如文件。
fputc
和putc
的定义大致相同,只是putc
可能是一个宏,它不止一次地评估流参数。 fputc
只评估一次stream参数。
putc和fputc之间的区别在于,通过使用putc,您可能会冒运行本质上不安全的宏版本,因为它可能不得不多次评估其流参数。 这导致大多数人不知道的并发症,因此不注意,因此fputc更好用。 fputc的宏没有这个问题。
putchar()
不只是在MSVC中 – 它是一个标准的C函数(嗯,真的是宏)。