来自_snprintf
stdio.h
的可靠程度 - 我的意思是它丢失的几率是多少?
它会在过去15年的所有编译器上运行吗? gcc 4.1 +,VC ++ 6,以及没有人真正使用的所有编译器,如borland和其他......
我正在编写一个具有c ++ 98兼容性的库, AMAZED ,snprintf
已在c ++ 11中引入 - 所以最近。它似乎对编写安全代码至关重要 - 防止缓冲区溢出,但是 - 从c ++ 98中遗漏...
编辑:我买不起第三方图书馆或stdio.h
答案 0 :(得分:1)
简短回答:_snprintf
不可靠。以下示例无法在Linux上使用gcc 4.9.3和clang 3.6.2编译:
#include <stdio.h>
int main(int, char*[])
{
char buffer[25];
_snprintf(buffer, sizeof(buffer), "Hello world %d\n", 123);
return 0;
}