You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言puts函数返回值疑问:何时会返回0?

puts函数何时会返回0?

首先明确结论:标准C中的puts函数永远不会返回0,不管是标准规定还是常见的编译器实现,都不存在puts返回0的场景。

关于puts返回值的标准规则

根据C语言标准,puts的返回值遵循以下规则:

  • 成功完成输出操作时,返回一个非负整数(注意:标准并未要求该值等于输出的字符数,这是与printf的关键区别);
  • 输出过程中发生错误(比如写入失败)时,返回EOF(通常被定义为-1)。

为什么空字符串调用puts返回1?

当你传入空字符串""调用puts时,函数会自动在输出末尾追加一个换行符,因此实际输出了1个字符。像glibc这类主流libc实现中,puts会返回实际输出的字符总数(包括自动添加的换行),所以此时返回1。但这属于实现细节,并非标准强制要求——哪怕某个实现让puts成功时固定返回1,也是符合标准的。

printf返回0的原因

printf的返回值定义为成功输出的字符数量,调用printf("")时没有输出任何字符,因此返回0是完全符合标准的行为,这和puts的返回值逻辑完全不同。

最终结论

  • 从C标准层面,puts成功时仅返回非负值,不存在返回0的情况;
  • 从实际编译器/库实现来看,puts返回输出的字符总数(含换行),最小返回值为1(空字符串场景),同样不会返回0;
  • 只有当输出操作出错时,puts才会返回EOF,永远不会返回0。

内容的提问来源于stack exchange,提问作者Curious-one

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 19:30:05