在sprintf_s中使用sprintf_s函数
C++ Using function with sprintf_s inside sprintf_s
我想写入数据到字符缓冲区。因此我有一个函数来格式化我的数据。作为一个例子,我只是像这样传递一个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;
}
但是输出结果是: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)
);
您在writeData
的两个调用中都重用sBufferData
。在您绕过sprintf_s
之前,对该函数的一次调用将覆盖另一次调用的结果。
添加一个单独的缓冲区:
char sBuffer[2048];
char sBufferData1[2048];
char sBufferData2[2048];
sprintf_s(sBuffer, 2048, "%s, %s",
writeData(1, sBufferData1),
writeData(2, sBufferData2)
);
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在 sprintf 函数中添加逗号
- 用C 字符串函数自动替换Sprintf函数
- 将字符串与 sprintf() 函数一起使用时出现问题
- 自定义 sprintf(..) 样式函数,仅具有可变输入
- 不同于c++中sprintf函数的输出
- c++sprintf函数和fstream来创建/检查文本文件