根据手册页,snprintf 返回从 glibc 2.2 版开始写入的字节数。但在较低版本的 libc2.2 和 HP-UX 上,它返回一个正整数,这可能导致缓冲区溢出。
如何克服这一点并编写可移植的代码?
编辑:为了更清楚
此代码在 lib 2.3 中完美运行
if ( snprintf( cmd, cmdLen + 1, ". %s%s", myVar1, myVar2 ) != cmdLen )
{
fprintf( stderr, "\nError: Unable to copy bmake command!!!");
returnCode = ERR_COPY_FILENAME_FAILED;
}
它在 Linux 上返回字符串 (10) 的长度。但相同的代码返回的正数大于 HP-UX 机器上打印的字符数。希望这个解释很好。