没有合适的资源?快使用搜索试试~ 我知道了~
vsnprintf字符串格式化输出实例:日志中打印程序名和行号 — TypeCodes1
需积分: 0 6 下载量 111 浏览量
2022-08-03
21:31:35
上传
评论 1
收藏 254KB PDF 举报
温馨提示
试读
2页
具体代码如下:* @FileName vsnprintf_name_line.c* @Describe A simple example for using v
资源详情
资源评论
资源推荐
2016/7/21 vsnprintf字符串格式化输出实例:日志中打印程序名和行号—TypeCodes
https://typecodes.com/cseries/vsnprintffilenameline.html 1/5
TypeCodes
vsnprintf字符串格式化输出实例:日志中打印程序名和行号
作者:vfhky|时间:2016031323:28|分类:cseries
在LinuxC/C++程序中打印日志时,可能会由于需要打印未知个数的变量参数,那么 vsnprintf 函数就排
上用场了。这里使用一个简单的C程序例子,演示在打印源程序文件名和该打印函数所在的行号的同时,
使用vsnprintf函数打印个数未知的参数变量。
1完整程序
代码比较简单,如果需要把内容打印在日志文件中的话,还需要调用文件处理函数。为了便于理解,这
里直接把内容输出到控制台上了。需要说明的三个地方:
1
2
3
静态全局变量 c_FileName 和 i_FileLineNum 分别用于存储源程序文件名和打印函数所在的行号;
自定义标识符 PRINT 先调用源程序文件名和行号的赋值函数 Get_File_Line ,然后调用个数未知的参数的处理函数 F_vsnprintf;
类似于sprintf和snprintf这两个函数,相比vsprintf函数,vsnprintf加了最大字节( MAXBYTES )的限制,防止内存溢出。
具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* @FileName vsnprintf_name_line.c
* @Describe A simple example for using vsnprintf to print the name and line-num of source file in linux.
* @Author vfhky 2016-03-13 23:28 https://typecodes.com/cseries/vsnprintffilenameline.html
* @Compile gcc vsnprintf_name_line.c -o vsnprintf_name_line
*/
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#define FILENAME_LEN 100
#define MAXLINE 1024
#define MAXBYTES 50
static char c_FileName[FILENAME_LEN];
static int i_FileLineNum;
//Self-define a function which can print the name and line-number of the source file calling it.
#define PRINT Get_File_Line( __FILE__, __LINE__ );\
F_vsnprintf
/**
Home Archives About
战神哥
- 粉丝: 42
- 资源: 325
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0