c++ - printf 语句和 printf_s 语句到底有什么区别在VS2013编译环境当中?
PHP中文网
PHP中文网 2017-04-17 12:00:37
[C++讨论组]

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(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”,执行到第四行的时候就会报错。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号