2010-12-05 10 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

+0

wbufferが空であるようです。 – coolface

+1

おそらくwbuffer [buflen] = * wc;またはwbuffer [buflen] = *(wc + i); ?またはwbuffer [buflen] = wc [0]; –

答えて

1

ループ内で参照を削除します。

wbuffer[buflen] = *wc; 
+0

wchar_tへのキャストはなぜですか? – AProgrammer

+0

@AProgrammer、そうですね、それはちょっと明白ですが... –

+0

ソケットからマルチバイト文字として読み込む例がありました。 – coolface

0

あなたがしようとしていることは不明です。

  1. wbufferは、プログラムの目的を説明してくださいあなたは

wchar_tの配列にwchar_t型へのポインタを格納しようとしている

  • 初期化されていません。

    0

    wcあなたの場合の変数は、ワイド文字の配列を含むメモリを指すポインタです。あなたはwc変数を経由して、いくつかのワイド文字を取得したい場合は、buffer_sizeあるものすべての

    wbuffer[buflen] = (wchar_t)wc[0];//here you assign first wide character of wc to first wide char of wbuffer, if buflen == 0 
    
    1

    まず、のようなものを書く必要がありますか?それはsizeof(wchar_t)の倍数ですか?そうでなければ、それを作ってください!

    第二に、wcwchar_tへのポインタ、つまり、あなたがindexの最大値はbuffer_size/size(wchar_t) - 1することができwc[index]、としてのwchar_tにアクセスすることができます。あなたは次のようなコードにする必要があります:

    //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 
    } 
    
    関連する問題