C言語なら俺に聞け! Part 102
レス数が900を超えています。1000を超えると表示できなくなるよ。
0907デフォルトの名無しさん
05/02/25 18:59:57下記のプログラムを実行すると、画面には 10 と表示されました。
void main()
{
char mbStr[] = "あいうえお";
printf( "%d", _mbstrlen(mbStr) );
}
最初僕は文字の数である 5 が返ってくると期待したのですが、実際には文字列のバイト数である 10 が返ってきました。
この関数は文字列のNULL文字を除いたバイト数を得る関数と理解して良いのでしょうか?
でもそれだと strlen() 関数と全く動作が同じになると思うのですが・・・
どのように理解すれば良いのか教えて下さい。
もう一つの質問です。下記のようにして、ワイド文字をマルチバイト文字に変換し表示しようとしたのですが、全くデタラメな文字列が表示されてしまいます。
void main()
{
char mbStr[256];
wcstombs( mbStr, L"ああああ", 256 );
printf( mbStr );
}
ワイド文字をマルチバイト文字に変換し、表示するにはどのようにすれば良いのでしょうか?
質問は以上の二点です。
どちらか一方でも解る方がいらっしゃいましたら返信お願いいたします。
使用している環境は下記のとおりです。
OS = WindowsXP Home Edition SP2
コンパイラ = Microsoft Visual C++ .NET
レス数が900を超えています。1000を超えると表示できなくなるよ。