文字化けを直したい
visual stadio C++ で、テキストファイルを読み込み、それをウインドウに表示するというプログラムを作っているのですが、表示すると文字化けしてしまいます。
原因がわかりません。
教えてください。
VC++ 2010です。
サイトを見て設定でマルチバイトに変えてあります
case IDB_SELECT:{
HDC hDC;
errno_t error;
static LPCTSTR TEST_STR ;//= _T("左ボタンが押されました");
// ファイルを開くコモンダイアログを作成
if( !GetOpenFileName( &ofn ) ){
MessageBox( hWnd, _T("エラー"), _T("エラー"), MB_OK );
SendMessage( hWnd, WM_CLOSE, 0, 0 );
return 0;
}
// 選択されたファイル名を表示
MessageBox( hWnd, filename_full, _T("OK"), MB_OK );
int k=0;
fp = fopen( "test.txt", "r" );
if( fp == NULL ) /* 関数が失敗していないか */
{
MessageBox( hWnd,"読み込み失敗", _T("bad"), MB_OK );
return 1; /* 異常終了は0以外を返す */
}
MessageBox( hWnd,"読み込み成功", _T("good"), MB_OK );
hDC = GetDC( hWnd );
while (fgets(file, 80, fp) != NULL){
TEST_STR = &file[k];
TextOut( hDC, 50, k*15+50, TEST_STR, (int)_tcslen(TEST_STR) );
k++;
}
fclose(fp);
}
return 0L;
}
InvalidateRect(hWnd, NULL, TRUE); // 再描画命令発
return 0L;
お礼
お礼が遅くなってしまい大変申し訳ありません! 質問した時点からだいぶ時間が経過していたので気付きませんでした…。 CStdioFile::WriteString関数を使うと終端文字まで 書き込んでくれるんですね。 勉強になりました。 ただ、残念ながら今回のケースでCStdioFile::WriteString関数に変更しても 現象は変わりませんでした…。 ちなみに、その後どうなったかの経過をご報告させて頂きます。 1. 他の人にチェックしてもらおうと思いソースを渡したところ、 その方のPC環境では再現せず。 (期待通り"0.000e+000"と表示) 2. 更に別の方のPC環境でも再現せず。 3. 結局原因が特定出来なかったため仕様自体を変更。 (科学記法を使用するのを廃止) 改めて、回答ありがとうございました!