gpt4 book ai didi

C++ 在 sprintf_s 中使用带有 sprintf_s 的函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:02 34 4
gpt4 key购买 nike

我想写入数据到一个字符缓冲区。因此,我有一个格式化我的数据的功能。例如,我只是像这样将一个 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)
);

关于C++ 在 sprintf_s 中使用带有 sprintf_s 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30246461/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com