snprintf 使用注意

#include <iostream>
#include <cstdio>  // 包含的头文件

using namespace std;

int main(int argc, char **argv)
{
    int theTargetShapeForEncoding = 7;
    int theParaLocationInformation = 5;

    char aCharFormat[2];   // 注意声明变量的大小,最好不要太小,如果为 1 的话, 那么是会出错的。 详细的请参考下面的函数解释。    //char aCharFormat[1]; // 如果声明为 1 , 那么后面的 std::cout ... 输出是空。
    snprintf(aCharFormat, sizeof(aCharFormat), "%x", theTargetShapeForEncoding);
    std::cout << "XXXX aCharFormat = " << aCharFormat << std::endl;

    snprintf(aCharFormat, sizeof(aCharFormat), "%x", theParaLocationInformation);
    std::cout << "XXXX aCharFormat = " << aCharFormat << std::endl;

    return 0;
}

头文件: #include <cstdio>

snprintf 函数原型:  int snprintf(char *str, size_t size, const char *format, ...)

详解:

(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符(‘\0‘);

(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符(‘\0‘),返回值为欲写入的字符串长度。

时间: 2024-08-10 16:12:15

snprintf 使用注意的相关文章

【转】snprintf()函数使用方法

众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf. 注:sprintf()函数:int sprintf( char *buffer, const char *format, [ argument] … );返回的是实际写入buffer的长度 自从snprintf代替了sprintf,相信大家对snprintf的使用不会少,函数定义如下: int snprintf(char* dest_str,size_t size,const char*

【C语言天天练(十三)】printf、fprintf、sprintf和snprintf函数

#include <stdio.h> int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format, ...); printf是标准的输出函数. fprintf传送格式化输

[C/C++基础] C语言常用函数sprintf和snprintf的使用方法

Sprintf 函数声明:int sprintf(char *buffer, const char *format [, argument1, argument2, -]) 用途:将一段数据写入以地址buffer开始的字符串缓冲区 所属库文件: <stdio.h> 参数:(1)buffer,将要写入数据的起始地址:(2)format,写入数据的格式:(3)argument:要写的数据,可以是任何格式的. 返回值:实际写入的字符串长度 说明:此函数需要注意缓冲区buffer溢出,要为写入的arg

(_)snprintf跨平台测试

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char a[10]; memset(a, 255, 10); #如果win _snprintf(a, 2, "ss"); #如果linux snprintf(a, 2, "ss"); #如果结束 printf("%d %d %d\n", a[0], a[1], a[2

Linux snprintf使用总结

snprintf()函数用于将格式化的数据写入字符串,其原型为:    int snprintf(char *str, int n, char * format [, argument, ...]); [参数]str为要写入的字符串:n为要写入的字符的最大数目,超过n会被截断:format为格式化字符串,与printf()函数相同:argument为变量. [返回值]成功则返回参数str 字符串长度,失败则返回-1,错误原因存于errno 中. snprintf()拷贝n-1个字符串到str中,

snprintf 返回值

在平时写代码的过程中,我一个推荐带有n系列的字符串函数,如 strcat ->strncat sprintf->snprintf 我们有类似的一个函数 void dump_kid(std::string* str, uint32_t kid) { char buffer[16]; int len; if (str->empty()) { len = snprintf(buffer,sizeof(buffer), "%u", kid); } else { len = s

sprintf和snprintf函数

printf()/sprintf()/snprintf()区别  先贴上其函数原型 printf( const char *format, ...)    格式化输出字符串,默认输出到终端-----stdout sprintf(char *dest, const char *format,...)     格式化输出字符串到指定的缓冲区 snprintf(char *dest, size_t size,const char *format,...)     按指定的SIZE格式化输出字符串到指定

snprintf()解析

snprintf(ssid_mac,sizeof(ssid_mac),"%s_%02X%02X",ssid,macval[4],macval[5]); ssid_mac = ssid_macval[4]macval[5]      将ssid 转化为string  macval[4] macval[5]转化为十六进制整数 最后组成wifi 命名   也就是ssid 加上MAC地址的第四第五部分组成wifi  名

snprintf函数用法

函数原型 int snprintf(char *str, size_t size, const char *format, ...) 功能 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中 (1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0'): (2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0'),返回值为欲写入