「ファイルを開く」ダイアログボックスを表示せずに直接指定したファイルから文字列を取得するプログラムを下のように書いたのですが、うまくいきませんどこが間違っているのでしょうか?
{
DWORD dwSize = 0L;
HANDLE hFile;
DWORD dwAccBytes;
char *lpszBuf;
hFile = CreateFile("C:\Documents and Settings\Administrator\My Documents\text.txt",
GENERIC_READ,
0,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
dwSize = GetFileSize(hFile, NULL);
ReadFile(hFile, lpszBuf, dwSize, &dwAccBytes, NULL);
MessageBox(hWnd, lpszBuf, "", MB_OK);
}
答え:
CreateFile関数の最初の引数で、\Dは'\D'という1文字の拡張表記と解釈されます。しかし'\n'や'\t'などはあっても'\D'という拡張表記はないので正しく認識できないものと思われます。
C:\Documents and Settings\Administrator\My Documents\text.txt
このフルパスは、ソースコード上の文字列リテラルでは
"C:\\Documents and Settings\\Administrator\\My Documents\\text.txt"
と書かなければなりません。'\\'は拡張表記の一種であり、コンパイル時に円記号1文字に変換されます。
補足の質問:
ありがとうございました。
おかげでうまくいきました。この質問・回答は役に立ちましたか?
ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.