这可能是一个简单的问题,但我已经尝试了一切,全然不知所措。
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/