我想将数据写入char缓冲区.因此,我有一个格式化数据的功能.作为一个例子,我只是将一个int值传递给函数,如下所示:
using namespace std;
#include <iostream>
char* writeData(int iData, char* sBufferData){
sprintf_s(sBufferData, 2048, "val:%i", iData);
return sBufferData;
}
int _tmain(int argc, _TCHAR* argv[])
{
char sBuffer[2048];
char sBufferData[2048];
sprintf_s(sBuffer, 2048, "%s, %s",
writeData(1, sBufferData),
writeData(2, sBufferData)
);
printf(sBuffer);
cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但输出结果为:val:1,val:1
我想要的是:val:1,val:2
有人可以向我解释,为什么我在最终缓冲区中获得两次1值?
char sBuffer[2048];
char sBufferData[2048];
sprintf_s(sBuffer, 2048, "%s, %s",
writeData(1, sBufferData),
writeData(2, sBufferData)
);
Run Code Online (Sandbox Code Playgroud)
您正在重复使用sBufferData这两个电话writeData.在您到达之前,对该函数的一次调用将覆盖另一个调用的结果sprintf_s.
添加单独的缓冲区:
char sBuffer[2048];
char sBufferData1[2048];
char sBufferData2[2048];
sprintf_s(sBuffer, 2048, "%s, %s",
writeData(1, sBufferData1),
writeData(2, sBufferData2)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |