我正在写一些代码,我收到一个奇怪的错误:当条件语句变为false时,我的for循环似乎没有退出.代码如下:
static void wstrcpy_from_Py_UNICODE(Py_UNICODE *inBuf, Py_ssize_t strLength, wchar_t **outBuf)
{
if (strLength == 0) *outBuf = NULL;
else
{
Py_ssize_t i;
wprintf(L"String Length: %d\n", strLength);
*outBuf = (wchar_t *)malloc (sizeof (wchar_t) * (strLength +1));
for (i=0; i < strLength; i++)
{
wprintf("i:%d, strLength:%d\n", i, strLength);
(*outBuf)[i] = (wchar_t)(inBuf[i]);
wprintf(L"i < strLength: %d\n\n", i < strLength);
}
/* Make sure new string is zero terminated */
(*outBuf)[i] = L'\0';
}
}
Run Code Online (Sandbox Code Playgroud)
当使用示例输入运行此代码时,(Py_UNICODE*缓冲区指向使用u"example"创建的内部unicode python对象),我得到以下输出:
String Length: 7
i:0, strLength: 7
i < …Run Code Online (Sandbox Code Playgroud)