繁体   English   中英

printf返回什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM