質問
先日お答えいただいた ReadFile funcによる文字列の扱いについて を参考に書き直させていただきましたがmallocの動的確保の値が実行時によってときどき変わってしまいます。UNICODEで"安以宇衣於"と打ち込んだファイルのリードなのでMem 1byte目にFFFE895Bをint型で5B89FEFFと正しく吐きますが何回か実行すると時々違う値を吐きます。
(1)コマンドプロンプトを開けすぎているからでしょうか?それともmallocの使い方が間違っているのでしょうか?考えられる原因を教えてください。
(2)そして今回intでファイルを読み込みましたがもしファイルの末が1byteだったり4bitであったりした場合は'\0'を入れるのでしょうか?また逆に書き出すときはその項を消して出力すればいいのでしょうか?
該当のソースコード
C++
1#define UNICODE 2using namespace std; 3 4#include <iostream> 5#include <Windows.h> 6 7int main(void) { 8 HANDLE file; 9 DWORD accbytes; 10 int *Mem; 11 const wchar_t filename[] = L"test.txt"; 12 13 file = CreateFile(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 14 15 Mem = (int*)malloc(GetFileSize(file, NULL)); 16 free(Mem); 17 18 if (Mem == NULL) { 19 cout << "Failes to get memory" << endl; 20 } 21 22 if (ReadFile(file, Mem, GetFileSize(file, NULL), &accbytes, NULL) != 0) 23 { 24 cout << "FileRead Successed" << endl; 25 cout << "File Size: " << GetFileSize(file, NULL) << endl << endl; 26 27 cout << "Address Value" << endl; 28 29 cout << hex << Mem[0] << endl; 30 } 31 return 0; 32}
補足情報(FW/ツールのバージョンなど)
Windows10 Pro
VisualStudio 2017 Community
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。