c++ - printf 语句和 printf_s 语句到底有什么区别在VS2013编译环境当中?

 手机用户2502883723 发布于 2022-11-04 15:30

printf 语句和 printf_s 语句到底有什么区别在VS2013编译环境当中?
最近,在用VS2013编写C语言的程序,这个问题老是在我脑海里面。另外想问一下为什么,必须用scanf_s,不能用scanf语句呢?

1 个回答
  • The main difference between printf_s and printf is that printf_s checks the format string for valid formatting characters, whereas printf only checks if the format string is a null pointer.

    MSDN printf_s

    所以,printf和printf_s的区别就在于printf只会检查格式字符串是否为空,而printf_s还会检查用户自定义的格式字符串是否合法。举个例子:

        char* test = "Hello world!";
        char* formatStr = "%s%d%h\n";
    
        printf(formatStr, test,10);
        printf_s(formatStr, test, 10);
    

    第二行中给的格式字符串是有问题的,但是第三行printf仍然可以输出“Hello world!10”,执行到第四行的时候就会报错。

    2022-11-08 00:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有