snprintf()函数使用方法

函数定义如下:

int snprintf(char*str, size_t size,constchar*format, ...);
函数功能:先将可变参数 “…” 按照format的格式格式化为字符串,然后再将其拷贝至dest_str中。

注意事项:如果格式化后的字符串长度小于size,则将字符串全部拷贝至dest_str中,并在字符串结尾处加上‘\0’;
如果格式化后的字符串长度大于或等于size,则将字符串的(size-1)拷贝至dest_str中,然后在字符串结尾处加上’\0’.
函数返回值是: 若成功则返回欲写入的字符串长度,若出错则返回负值。

实例:

     	#include <stdio.h>  
        #include <stdlib.h>  
        #include <string.h>  
        
        int main(void){  
        
            char dest_str[1024];  
            memset(dest_str,0,sizeof(dest_str));  
        
            char *s1 = "Linux C程序设计";  
            int size = strlen(s1);  
            int year = 2017;  
            int month = 9;  
            int day = 8;  
        
            snprintf(dest_str,sizeof(dest_str),"字符串:%s\n长度是:%d\n今天是:%d年%d月%d日\n",s1,size,year,month,day);  
        
            printf("%s",dest_str);  
        
            return 0;  
        }  

执行结果

字符串:Linux 
C程序设计 
长度是:15 
今天是:2017年9月8日

对于返回值 需要注意的是snprintf的返回值是欲写入的字符串(即源字符串)长度,而不是实际写入的字符串度。如:

    char test[8];
    int ret= snprintf(test,5,"1234567890"); 
    printf("%d|%s\n",ret,test);

运行结果为:

10|1234

linux和windows下是不同的

linux下用的是snprintf();
而windows下用的是_snprintf();

猜你喜欢

转载自blog.csdn.net/qq_43539984/article/details/86818753