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