2010-12-05 59 views
1

這是我的代碼:如何訪問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; 

有什麼不對呢?

+0

沒有什麼錯,那...什麼事情出錯了? – Goz 2010-12-05 08:35:13

+0

wbuffer似乎是空的。 – coolface 2010-12-05 08:41:05

回答

1

在循環中取消引用wc。

wbuffer[buflen] = *wc; 
0

目前尚不清楚你想要做什麼。

  1. wbuffer未初始化
  2. 你試圖把指針wchar_t的存儲到wchar_t數組

請解釋該計劃的目的。

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 
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 
}