现在的位置: 首页 > 综合 > 正文

带格式化参数的strcat宏定义

2018年04月02日 ⁄ 综合 ⁄ 共 649字 ⁄ 字号 评论关闭
#include <stdio.h>
#include <iostream>
#include <string.h>

using namespace std;

// 带格式化参数的strcat宏定义
#define Strcat(x, fmt, ...) sprintf(x, "%s" #fmt, x, __VA_ARGS__)

int main(void)
{
	char buf[200];
	
	for(int k = 0; k < 4; k++)
	{
		memset(buf, 0, sizeof(buf));
		for(int i = 0; i < 2; i++)
		{
			if((k & (i+1)) == (i+1))
			{
				//sprintf(buf, "%surl=trackID=%d;seq=1;rtptime=0", buf, i);
				Strcat(buf, "url=trackID=%d;seq=1;rtptime=0", i);
				if(i == 0 && (k & 0x2) == 2)
					strcat(buf, ",");
			}
		}
		cout << k << ": [" << buf << "]" << endl;
	}

	return 0;
}

运行结果:

[zcm@cpp #181]$make
g++ -Wall -Os -DLINUX -o a a.cpp
[zcm@cpp #182]$./a
0: []
1: ["url=trackID=0;seq=1;rtptime=0"]
2: ["url=trackID=1;seq=1;rtptime=0"]
3: ["url=trackID=0;seq=1;rtptime=0","url=trackID=1;seq=1;rtptime=0"]

 

抱歉!评论已关闭.