#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"]