[英]What does printf return?
今天在我的采访中,采访者问:printf是一个函数,每个函数都返回一些东西; int,void,float等。现在printf返回什么,因为它是一个函数?
int
。 成功时,返回写入的字符总数。 失败时,返回负数。
并非每个函数都返回一些东西,使用void
表示:
void function_returns_nothing(void);
printf
是一个函数(在<stdio.h>
声明)并返回一个int
,即输出的字符数。 如果发生错误,则该数字为负数。
printf()
来自MSDN的参考:
返回打印的字符数,如果发生错误则返回负值。
要将细节细化添加到其他精细答案:
printf()
返回一个int
,但是这表示传输与打印/写入的字符?
printf
函数返回传输的字符数,如果发生输出或编码错误,则返回负值。 C11dr§7.21.6.33(我的重点)
成功时,返回传输的数字。 stdout
通常是缓冲的 ,因此打印的字符数可能无法实现或直到稍后才会失败。
当int printf()
因各种原因出现问题时,它会返回一个负数。 传输的字符数是未知的。
如果发生以下成功的fflush(stdout)
,则printf()
的非负值肯定是打印的数字。
int transmitted = printf(......);
int flush_retval = fflush(stdout);
int number_certainly_printed = -1; // Unknown
if (transmitted >= 0 && flush_retval == 0) {
number_certainly_printed = transmitted;
}
请注意,“打印” '\\n'
通常会刷新stdout
,但是甚至没有指定该操作。
在C中自动刷新stdout缓冲区的规则是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.