这是我的代码:
wchar_t wbuffer[512];
wchar_t* wc = (wchar_t*) malloc(buffer_size);
int buflen = 0;
// ... stuff
// inside the while loop
wbuffer[buflen] = (wchar_t)wc;
这有什么问题?
答案 0 :(得分:1)
在你的循环中取消引用wc。
wbuffer[buflen] = *wc;
答案 1 :(得分:1)
首先,buffer_size
是什么?它是sizeof(wchar_t)
的倍数吗?如果没有,那就去吧!
其次,wc
是指向wchar_t
的指针,这意味着您可以wchar_t
访问wc[index]
index
,其中buffer_size/size(wchar_t) - 1
的最大值可以是//this 'if' is needed if you don't have any idea of what buffer_size could be!
if (buffer_size % sizeof(wchar_t))
buffer_size = (buffer_size / sizeof(wchar_t) + 1) * sizeof(wchar_t);
wchar_t wbuffer[512];
wchar_t* wc = (wchar_t*) malloc(buffer_size);
int buflen = 0;
int maxindex = buffer_size/ sizeof(wchar_t) - 1;
int index = 0;
while ( index <= maxindex)
{
//use wc[index]; here
index++; //last line
}
。您的代码应该是这样的:
{{1}}
答案 2 :(得分:0)
目前还不清楚你要做什么。
请解释该计划的目的。
答案 3 :(得分:0)
wc
变量是一个指针,指向包含宽字符数组的内存。如果你想通过wc
变量得到一些宽字符,你应该写一些类似
wbuffer[buflen] = (wchar_t)wc[0];//here you assign first wide character of wc to first wide char of wbuffer, if buflen == 0