stdio.h不是标准库吗,为什么windows和linux下的函数不同?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

stdio.h不是标准库吗,为什么windows和linux下的函数不同?

杨冬芳 2016-05-30 14:10:25 1432

1.1 linux下

char test[4] = {0};
snprintf(test, 4, "%s", "hello");

test的内容将成为 hel0

1.2 windows下

首先,没有snprintf这个函数,使用_snprintf替代吧

char test[4] = {0};
_snprintf(test, 4, "%s", "hello");

但是test的内容却是 hell

Linux Windows
分享到
取消 提交回答
全部回答(1)
  • 杨冬芳
    2019-07-17 19:20:30

    简单来说,虽然都是“标准库”,但windows遵循的标准跟Linux/Unix遵循的标准不完全一样。Linux/Unix一般遵循POSIX/SUSv3等标准,而windows有自己一套标准,所以需要仔细查看各自平台上的文档说明,区别对待。就你这个代码来说,就很好地体现了两个平台上对类似功能的不同处理:在Linux上,snprintf的行为是“最多复制参数指定的那么多个字节(包括结束的'0')”,而Windows上的_snprintf是不把结束的'0'计算在内的。这些在man/msdn中都有说明

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程