//関数部関数ですがパスをどのように設定すればいいのでしょうか?実行する.exeファイルがあるディレクトリ内からtest.txtを探すというプログラムです
知りたいこと
どの関数を使ってもファイルがありませんと出力されます。
どうすればファイルを発見?できるのか知りたいです。
int main() { //DWORD a = GetFileAttributes((LPCSTR)"test.txt"); //DWORD a = GetFileAttributesW((LPCWSTR)"test.txt"); DWORD a = GetFileAttributesA((LPCSTR)"test.txt");//// if(a != INVALID_FILE_ATTRIBUTES) { //printf("%s",a); printf("ファイル発見!\n"); }else { printf("ファイルがありません。\n"); } int _c_ = getchar(); return 0; }
GetFileAttributesやGetFileAttributesWではなく、GetFileAttributesAを呼び出している理由はどのようなものでしょうか?
パスの指定方法自体は特に問題ないと思われます。
現状、何が問題(困っている)なのかを記載ください。
特に理由はありませんが以下のすべてを試しましたがどれもファイルがありませんと出力されます。
DWORD s = GetFileAttributes((LPCSTR)"test.txt");
DWORD w = GetFileAttributesW((LPCWSTR)"test.txt");
DWORD a = GetFileAttributesA((LPCSTR)"test.txt");
本題とは無関係ですが、GetFileAttributesが成功したときの返り値はビットマスクの組み合わせで、文字列ではありません。printfの%sで出力はできません。
なるほど。ファイルを発見しました と文字列を表示できるようにコードを変更しました。
GetCurrentDirectoryなりを使って、実行時のカレントディレクトリが.txtのある場所になっているか確認ください。
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getcurrentdirectory
INVALID_FILE_ATTRIBUTESが返ってきたとき,GetLastErrorとかで理由を見てみればどうでしょう.
(ファイルが無い以外の失敗理由があるのか不明ですが)
回答2件
あなたの回答
tips
プレビュー