這是我的代碼:如何訪問wchar_t *的wchar_t?
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;
有什麼不對呢?
這是我的代碼:如何訪問wchar_t *的wchar_t?
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;
有什麼不對呢?
在循環中取消引用wc。
wbuffer[buflen] = *wc;
目前尚不清楚你想要做什麼。
請解釋該計劃的目的。
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
首先,什麼是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
}
沒有什麼錯,那...什麼事情出錯了? – Goz 2010-12-05 08:35:13
wbuffer似乎是空的。 – coolface 2010-12-05 08:41:05