printf(“%s”, NULL) 和 printf(“%s\n”, NULL) 的区别

区别是:printf(“%s”, NULL)这个是调用了printf函数进行处理,printf把这个当成了一种情况来处理,识别到这是一个NULL指针。而printf(“%s”, NULL)则是直接调用了puts函数来进行输出,对于NULL指针并没有作判断处理,所以才会引发Segmentation fault。

printf(

printf(“%s”, NULL)这个是调用了printf函数进行处理,printf把这个当成了一种情况来处理,识别到这是一个NULL指针。而printf(“%s”, NULL)则是直接调用了puts函数来进行输出,对于NULL指针并没有作判断处理,所以才会引发Segmentation fault。

无论 C / C++,都要求 printf 的 %s 对应一个有效的指向字符数组的指针。如果提供的参数与要求不服,则对应的行为未定义。

If any argument is not the correct type for the corresponding conversion specification, the behavior is undefined.

所以 printf 考虑了 %s 的参数是 NULL 的情况吗?没有,标准只规定其行为未定义。

无论格式化字符串写成什么样子,只要你为其中的 %s 对应一个 NULL,打印「(null)」、打印「你这个笨蛋」、段错误、删除磁盘上所有文件、帮你叫个外卖……都是合理合法的 C / C++ 程序的行为。

延伸阅读:

什么是printf?

printf 是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息。printf 是C语言标准库函数,定义于头文件 <stdio.h>。printf 函数的一般调用格式为:printf(“<格式化字符串>”, <参量表>)。输出的字符串除了可以是字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

文章标题:printf(“%s”, NULL) 和 printf(“%s\n”, NULL) 的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38587

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月17日 上午2:26
下一篇 2023年2月17日 上午2:28

相关推荐

  • Java项目怎么使用Swagger生成API文档

    Swagger号称世界上最流行的Api框架;RestFul Api 文档在线自动生成工具=> Api文档与Api定义同步更新;直接运行,可以在线测试API接口;支持多种语言:(Java,Php…)。在项目中使用Swagger需要springfox。 一、编写API接口文档 延伸阅读 什么是java …

    2023年2月8日
    1.1K00
  • 项目管理属于工商管理吗

    项目管理在实质上是工商管理的一个分支,并在2方面表现出密切的联系:1、项目管理要求跨部门协调资源以完成特定任务。2、它需要使用工商管理的基本原理来实现项目目标。以第二点为例,工商管理的基本原理如领导、计划、组织、控制等,是项目管理过程中必不可少的。项目经理需利用这些原理安排任务、管理团队以及确保项目…

    2024年1月8日
    38600
  • 企业应该如何处理危机

    企业处理危机时应快速反应、透明沟通、积极自查、法律遵从、积极应策、情感关怀。在迅速反应方面,要设立紧急小组并实时更新信息。特别针对透明沟通,企业要确保信息公正真实,避免误导。 透明沟通是处理危机时不可或缺的一环。企业需确立开放的信息传递渠道,并主动发布情况更新,以消减谣言与不实消息对企业形象的破坏。…

    2023年12月19日
    29900
  • 校园外卖管理系统的设计与实现

    摘要:校园外卖管理系统旨在提供一个便利、高效、安全的环境,以满足大学生的饮食需求与商家的经营需要。1、系统功能规划:包括用户管理、外卖店铺管理、商品管理、订单处理及消息通知等模块。2、技术选型:综合考虑成本、效能和维护性的基础上选择技术栈。3、数据安全及隐私保护:确保用户信息和交易数据的安全。4、操…

    2024年1月9日
    25700
  • 如何做好面试的项目质量管理

    面试的项目质量管理是确保项目成功交付的关键步骤,需要计划细致、执行到位、持续改进、沟通有效。首先,计划细致意味着项目在启动之前就应确定明确的质量目标和标准,制定相应的质量管理计划,确保团队对质量方面的期望和责任有清晰的认识。此外,执行到位要求在项目执行阶段严格按照质量管理计划来操作,并对过程中的工作…

    2024年4月11日
    5400
  • Web 开发人员选择 LAMP 堆栈来构建 Web 应用程序的原因

    Web 开发人员选择 LAMP 堆栈来构建 Web 应用程序的原因有:1、费用;2、效率;3、维护;4、支持;5、灵活性;因为所有 LAMP 技术都是开源的,这意味着任何开发人员或公司都可以使用它们而不需要支付许可费用。 一、开发人员选择 LAMP 堆栈来构建 Web 应用程序的原因是什么 Web …

    2022年11月10日
    40300
  • 企业项目部如何管理

    对于企业项目部而言,有效的管理是确保项目成功的关键。项目规划、资源分配、风险管理、团队合作、以及沟通是项目管理中最重要的几个方面。在这些要素中,项目规划尤为重要。它作为成功执行和完成项目的基石,涉及到目标设定、任务分解、时间线规划以及资源预算等关键环节。通过详尽的项目规划,管理者能够清晰地掌握项目的…

    2024年4月10日
    3800
  • SAAS追溯云平台是什么意思

    SAAS追溯云平台是一种结合软件即服务(SAAS)和追溯技术的现代解决方案,用于监控和跟踪产品或流程的全生命周期。包括:1.软件即服务(SAAS)模式;2.追溯功能;3.云平台;4.应用场景;5.优势与挑战。追溯功能可以帮助企业确保质量控制,合规性,并增加供应链的透明度。 1.软件即服务(SAAS)…

    2023年4月30日
    28600
  • 人工智能需要哪些高级的数学知识

    人工智能需要哪些高级的数学知识有:1、线性代数;2、概率论与数理统计;3、微积分;4、优异化方法;5、图论;6、复杂性理论。其中,线性代数主要涉及向量空间和矩阵操作,这在深度学习中非常常用。 1、线性代数 线性代数:主要研究向量、向量空间(或称线性空间)、线性变换(特别是矩阵表示的线性映射)等概念。…

    2023年7月30日
    82700
  • 为什么vscode运行不了c

    为了确保 Visual Studio Code (以下简称 VSCode) 能够运行 C 语言程序,你需要配置一套完整的 C 语言开发环境。这包括安装编译器、配置调试器、以及安装必要的扩展。 一、C 语言编译器的安装 首先,确保你的系统中安装了 C 语言编译器。在 Windows 上,常见的是 Mi…

    2024年4月3日
    8800

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部