函数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
unix snprintf的用法
最新推荐文章于 2021-05-20 20:31:20 发布