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

相关推荐

  • 项目管理软件怎么用

    使用方法:一、确定团队的需求和目标;二、选择适合团队的软件;三、建立清晰的项目目标和任务;四、分配任务和责任;五、监控进度和风险;六、促进沟通和协作;七、提供实时数据和分析;八、培训团队成员;九、整合其他工具和应用程序;十、迭代式开发。 一、确定团队的需求和目标 在选择项目管理软件之前,要先确定团队…

    2023年4月29日
    3800
  • java的反射有什么用处

    java的反射的用处有:1、 Java反射包reflection提供对Class,Method,field,constructor1 等信息的封装类型;2、 通过这些api可以轻易获得一个类的各种信息并且可以进行实例化,方法调用等。

    2023年2月10日
    13100
  • web物联网系统开发有哪些应用

    web物联网系统开发的应用:1、收集和处理大量数据;2、动态UI体验;3、聊天机器人集成与创意用户互动;5、实时支持和网络安全;6、对移动平台的深入支持;7、物联网网站开发对各个行业的影响。其中,物联网系统能够从传感器收集和处理大量数据。

    2023年1月5日
    33600
  • 软件怎么开发出来的

    软件开发流程是:一、需求收集与分析;二、原型设计;三、UI设计;四、开发;五、发布和推广;六、运营和维护。在开始任何一个项目之前,首先需要进行需求收集与分析。只有在清楚地了解用户需求和功能需求之后,才能进行后续的开发工作。 一、需求收集与分析 在开始任何一个项目之前,首先需要进行需求收集与分析。这一…

    2023年4月16日
    4700
  • 如何用project做进度计划

    使用project做进度计划的步骤:1、启动Project;2、打开一个空白的项目文件;3、设置项目信息;4、设置项目选项;5、选择项目视图;6、显示项目摘要任务;7、添加任务;8、保存项目进度等。启动Project的方法不同,具体取决于 Windows 的版本。 1、启动Project 要从桌面启…

    2023年2月24日
    1.1K01
  • 为什么调试很重要

    为什么调试很重要:调试是软件开发过程中至关重要的一步,可以找出代码中的错误和问题,并在早期发现和纠正这些问题。调试是指通过对程序、硬件或系统的错误进行定位、分析和修复的过程。调试可以帮助开发人员发现并解决程序中的逻辑错误、语法错误等问题,保证软件的正确性和可靠性。 一、调试的定义 调试是指通过对程序…

    2023年6月3日
    6300
  • 爱因互动洪强宁:参与创业≠创业,融到钱的那晚我失眠了

      文|babayage 编辑 |羽葶 2006结缘阿北8年完整亲历创业厂牌成长 2006结缘阿北 科创人(以下简称科):很多技术前辈都有过在某个时期——入职一家契合自己的公司或接触到一项与自己同频的技术——成长速度明显提升,您在创建爱因互动之前经历过14年的职场生活,有没有类似的体验? 洪强宁(以…

    2022年3月20日
    33800
  • 什么是实例方法、类方法和静态方法

    实例方法:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法;类方法:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类里的属性和方法。 一、实例方法 定义:第一个参数必须是实例对象,该参数名一般约定为“s…

    2023年5月8日
    4100
  • 线程多线程技术具有哪些优越性

    线程多线程技术具有的优越性:1、响应速度快;2、资源共享;3、成本较低;4、可扩展性。响应速度快是指,交互式应用程序中的多线程可能允许程序继续运行,即使程序的一部分被阻止或正在执行冗长的操作,从而提高对用户的响应能力。

    2023年1月9日
    11800
  • 空白字符有哪些

    空白字符有:1、空格;2、制表符;3、换行符(创建新行);4、回车符;5、换页符;6、垂直制表符。其中,空格就是按空格键(space键)后,出现一个占位符的空白区域。

    2023年1月4日
    5.1K00

发表回复

登录后才能评论
联系我们
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部