質問:
「ファイルを開く」ダイアログボックスを表示せずに直接指定したファイルから文字列を取得するプログラムを下のように書いたのですが、うまくいきませんどこが間違っているのでしょうか?
{
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のない保証の正しさ.

  • ウィルスバスター2006からウイルスセキュリティZEROに...
  • さっきYouTubを開いたら英語で「あなたは999999...
  • 配列xに5,5,5,3,2が入っています。この配列から重...
  • Windows Media Playerに記録した映像を、ビデオやDVD...
  • 質問することは出来る様になりましたが、後日サイトイ...
  • MS IME2000で酸素の記号「O2」の下に小さ...