小编ifr*_*oss的帖子

对于循环不在c中终止

我正在写一些代码,我收到一个奇怪的错误:当条件语句变为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)

c for-loop

9
推荐指数
2
解决办法
494
查看次数

标签 统计

c ×1

for-loop ×1