putch()和putchar()有什么区别?

3

好的,我对C语言还比较陌生。

我一直在试图弄清楚 putch()putchar() 的区别是什么?我试着去搜索答案,但是得到的都是同样复制粘贴般的信息:

putchar(): 这个函数用来在屏幕上打印一个字符,可以是C字符集中的任何字符(即可打印或不可打印字符)。

putch(): putch() 函数用于通过标准输出设备像监视器一样显示所有字母数字字符。此函数每次显示单个字符。

作为英语不是我的母语,我有些迷惑了。C中是否有非可打印字符?如果有,它们是什么?为什么putch不能产生相同的结果?

我尝试过搜索C字符集中所有的字母数字字符,但是在我的测试中,两个函数似乎都可以打印出来,没有什么区别。

无论如何,我有点迷失方向了。

有人能帮我吗?谢谢!

简而言之,putchar()putch() 有什么区别?(或者相反的,或者其他的我不知道的东西)

我不知道,希望它们之间有明显的区别,但似乎找不到这种区别。


putch()是什么?你的意思是putc()吗?C语言规范没有定义名为putch()的函数。 - John Bollinger
区别在于putchar是一个标准函数,可以在任何地方使用,而putch是一个非标准的MS-DOS函数,今天已经完全过时了。我敦促您始终使用putchar,并忘记putch - Steve Summit
请参阅关于 getchgetchar 的类似问题的内容。链接 - Steve Summit
这是一个很好的问题,我也曾经想过。 - Neil
2个回答

1

putchar()是一个标准函数,可能被实现为宏,定义在<stdio.h>中,用于将单个字节输出到标准输出流(stdout)。

putch()是一些遗留系统上可用的非标准函数,最初在MS/DOS上实现为直接将字符输出到屏幕上,绕过标准流缓冲方案。此函数已经过时,不要使用。

通过stdout向终端输出默认情况下在大多数系统上是行缓冲的,因此只要您的输出以换行符结尾,它就会立即出现在屏幕上。如果需要在没有换行符的情况下将输出刷新,则可以使用fflush(stdout)强制写入流缓冲区内容到终端。


我不明白,所以 putchar 更好是因为它将单个字节输出到输出流中,而不仅仅直接将字符输出到屏幕上?在这种情况下,putch 不是更好吗,因为计算机需要做更少的工作来打印出字符? - why
1
标准输出流,也称为 stdout,默认情况下被定向到终端(也称为屏幕)。putch 是一种过时的、不可移植的替代方案,不值得学习。请忘记它并且不要使用它。 - chqrlie

0

putch替换换行符(\n)

putchar是C编程语言中的一个函数,用于将单个字符写入标准输出。


1
这个答案是误导性的:putchar 在仍然使用从 CP/M 借鉴来的古老约定的传统系统上也执行换行转换。转换是在实现的较低级别上执行的,即当流缓冲区内容写入系统句柄时。putch 的处理方式不同,但结果是相同的,并且使用此函数会使程序不必要地不可移植。不要陷入 Microsoft EEE 策略 的陷阱。 - chqrlie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接