- Win32API質問箱 Build121 [転載禁止]©2ch.net
130 :sage[]:2015/09/17(木) 15:36:32.51 ID:rzmccn0E - Win32APIを使ってテキストファイルから1文字だけ取り出そうとしているのですが、できません。
アドバイスもらえないでしょうか? 以下ソースコードです。 =====ここから===== int _tmain() { HANDLE hFile = NULL; TCHAR *strFileName = 0; TCHAR buff = 0; DWORD byte_read = 0; _tsetlocale(LC_ALL, TEXT("ja")); // 読み込むファイルのフルパス。 strFileName = TEXT("D:/visualStudio/test/test3.txt");
| - Win32API質問箱 Build121 [転載禁止]©2ch.net
131 :sage[]:2015/09/17(木) 15:37:04.86 ID:rzmccn0E - // 読み込むファイルのファイルハンドル。
hFile = CreateFile( strFileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); // ファイルハンドルのエラー処理。 if (hFile == INVALID_HANDLE_VALUE || hFile == NULL) { _tprintf(TEXT("hFile error.\n")); _gettchar(); return 0; } // ファイルから1文字読み込む。 ReadFile(hFile, &buff, (DWORD)sizeof(TCHAR), &byte_read, NULL); // 読み込んだ1文字を表示。 _tprintf(TEXT("%c\n"), &buff); CloseHandle(hFile); _gettchar(); return 0; } =====ここまで=====
| - Win32API質問箱 Build121 [転載禁止]©2ch.net
135 :130[sage]:2015/09/17(木) 16:06:25.74 ID:rzmccn0E - レスありがとうございます。
>>132 >>133 &buff→buffに変更してもコマンドプロンプトには?しか表示されないままです。 test3.txtはサクラエディタを使って、Unicode、改行文字コードCRLFで保存しています。 test3.txtの内容は1行目にabcという文字列があります。 >>134 temp = ReadFile(hFile, &buff, (DWORD)sizeof(TCHAR), &byte_read, NULL); // 読み込みのエラー処理。 if (temp == 0) { _tprintf(TEXT("ReadFile error.\n")); _gettchar(); return 0; } としてみましたが、特にエラーは出てないようです。 なぜできないのか、心当たりが無くなってしまって途方に暮れています。 ちなみに1文字ではなく、文字列全体を取得することならできました。
| - Win32API質問箱 Build121 [転載禁止]©2ch.net
137 :130[sage]:2015/09/17(木) 16:26:57.31 ID:rzmccn0E - >>136
ありがとうございます! 試してきます!
| - Win32API質問箱 Build121 [転載禁止]©2ch.net
139 :130[sage]:2015/09/17(木) 17:23:07.39 ID:rzmccn0E - >>138
つかめてきました! ありがとうございます! 結局引っかかっていたのはUnicodeのBOMが大きな要因でした。 助かりましたorz
|
|