gpt4 book ai didi

c++ - 使用 %s 和 sprintf 没有给出预期的结果

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:08 30 4
gpt4 key购买 nike

这可能是一个简单的问题,但我已经尝试了所有方法并且完全不知所措。

sprintf(&szDevCapEntry[strlen(szDevCapEntry)], ",%s:%0d", (LPCSTR)szAnalogP, szAnalogChannels);

条目应该添加 AL:1000 但它添加了 A:1000 我不知道为什么。 szAnalogP 绝对是 AL。有人有什么想法吗?

编辑:我的功能:

extern "C" UINT __stdcall WriteDriverEntry(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
CString m_DevicePrintName, m_nDeviceNumber, m_DeviceName;
LPWSTR szDevicePrintName= NULL, szDeviceNum = NULL, szValueBuf = NULL, szAnalogP = NULL, szDigitalP = NULL, szAnalogOP = NULL, szDigitalOP = NULL;
LPWSTR szDiagnosticP = NULL, szCounterP;
CHAR szDevCapEntry[256], szBuffer[MAX_PATH];
int Index, szAnalogChannels, szDigitalChannels, szAnalogOChannels, szDigitalOChannels, szDiagnosticChannels, szCounterChannels;

hr = WcaInitialize(hInstall, "WriteDriverEntry");
ExitOnFailure(hr, "Failed to initialize");

WcaLog(LOGMSG_STANDARD, "Initialized.");

hr = WcaGetProperty(L"COMPORTNUMBER", &szDeviceNum);
ExitOnFailure(hr, "failed to get comport number");
m_nDeviceNumber = szDeviceNum;

hr = WcaGetProperty(L"DEVICEPRINTNAME", &szDevicePrintName);
ExitOnFailure(hr, "failed to get device print name");
m_DevicePrintName = szDevicePrintName;

hr = WcaGetProperty(L"DEVICENAME",&szValueBuf);
ExitOnFailure(hr, "failed to get device name");
m_DeviceName = szValueBuf;

wsprintf(szDevCapEntry, "%s,%s,%s", (LPCSTR)m_DeviceName, m_nDeviceNumber, (LPCSTR)m_DevicePrintName);

hr = WcaGetProperty(L"ANALOGPREFIX",&szAnalogP);
hr = WcaGetIntProperty(L"ANALOGCHANNELS",&szAnalogChannels);

if (szAnalogChannels != 0 )
{
WcaSetProperty(L"TEST", szAnalogP);
sprintf(&szDevCapEntry[strlen(szDevCapEntry)], ",%s:%0d", (LPCSTR)szAnalogP, szAnalogChannels);
WcaLog(LOGMSG_STANDARD, szDevCapEntry);
}

if (!UpdateCapEntry(szDevCapEntry))
return -1;

LExit:

er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}

我有不同的变体,例如 %.2s,这样它会显示两个字符,但我只得到一个。如果这是一个太广泛的问题,我很抱歉,但我是初学者,无法解决这个问题。我认为也许将变量转换为 char 可能有效,但它给了我相同的结果。

最佳答案

您显示的代码没有任何问题。

有一点看起来很奇怪,就是您必须将 szAnalogP 显式转换为 LPCSTR。这表明它是其他类型。我想知道您正在解释的 Unicode C 字符串是 ASCII 字符串还是类似的东西?

关于c++ - 使用 %s 和 sprintf 没有给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15250084/

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