unix snprintf的用法

函数sprintf 、snprintf把由字符串format确定的输出及其后的结束字符NULL放入从s开始的连续字节中。

int sprintf( char *s, const char *format , /* args */ )
返回值:如果成功,返回缓冲区中存储的字节数,如果失败返回负值。

int snprintf( char *s, size_t n , const char *format , /* args */ )
返回值:如果成功,返回格式字符的个数,如果失败返回负值。

snprintf指定了写入缓冲区的字符的大小,所以,比sprintf安全,不会造成字符串的溢出。
重点说一下:size_t n 如果小于需要写入s的长度,则按字符串的实际长度写入。

举例如下(环境solaris 10):
#include <stdio.h>

int main( int argc , char **agrv )
{
    char str[5];
    int  i; 
    int  i_write;
    int  i_length;
    printf( " input a integer:" );
    scanf( "%d" , &i );
    printf( " input a write length:" );
    scanf( "%d" , &i_write );
    i_length = snprintf( str , i_write , "%d" , i );
    printf( " i_length = %d /n " , i_length );
    printf( " str = %s /n " , str );
    return 0;
}

执行结果如下:
 afcsc:~/appl/src/trn/bom/test$ test_snprintf
 input a integer:123
 input a write length:2
 i_length = 3
 str = 1
 
 afcsc:~/appl/src/trn/bom/test$ test_snprintf
 input a integer:123
 input a write length:3
 i_length = 3
 str = 12
 
 afcsc:~/appl/src/trn/bom/test$ test_snprintf
 input a integer:123
 input a write length:4
 i_length = 3
 str = 123
 
 afcsc:~/appl/src/trn/bom/test$ test_snprintf
 input a integer:123
 input a write length:9999
 i_length = 3
 str = 123
 
 afcsc:~/appl/src/trn/bom/test$ test_snprintf
 input a integer:12345
 input a write length:5
 i_length = 5
 str = 1234
 
 afcsc:~/appl/src/trn/bom/test$ test_snprintf
 input a integer:12345
 input a write length:6
 i_length = 5
 str = 12345

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值