これは私のコードです:これが間違っている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;
何?
ループ内で参照を削除します。
wbuffer[buflen] = *wc;
wchar_tへのキャストはなぜですか? – AProgrammer
@AProgrammer、そうですね、それはちょっと明白ですが... –
ソケットからマルチバイト文字として読み込む例がありました。 – coolface
あなたがしようとしていることは不明です。
wchar_tの配列にwchar_t型へのポインタを格納しようとしている
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
まず、のようなものを書く必要がありますか?それはsizeof(wchar_t)
の倍数ですか?そうでなければ、それを作ってください!
第二に、wc
はwchar_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
}
何か間違っていますか? – Goz
wbufferが空であるようです。 – coolface
おそらくwbuffer [buflen] = * wc;またはwbuffer [buflen] = *(wc + i); ?またはwbuffer [buflen] = wc [0]; –