snprintf/_snprintf 在不同平台间函数差异

 

//VC
int main(int argc, char* argv[])
...
{
    char   buff[100
];
     printf(
"%d ",_snprintf(buff,10,"1234567890ab"
));
     printf(
"%s"
,buff);
    return 0
;
}


//Linxu:gcc/g++
#include <stdio.h>
int main(int argc, char* argv[])
...
{
    char   buff[100
];
     printf(
"%d ",snprintf(buff,10,"1234567890ab"
));
     printf(
"%s"
,buff);
    return 0
;
}
vc程序的输出是:
-1
1234567890@
gcc程序的输出是:
12
123456789
从输出结果可以知道:VC中的_snprintf的count参数表示,会向buff中写入count个字符,不包括'\0'字符,
并且不会在字符串末尾添加'\0'符,并且,如果字符串超过count,函数返回-1以标志可能导致的错误;gcc
中的snprintf函数的count参数表示,向buff中写入10个字符,包括'\0'字符,并且,返回实际的字符串长度,
例子中为12

 

你可能感兴趣的:(职场,休闲,snprintf,_snprintf)