C言語にてプログラミングを行っていて、FindFirstFileにてファイル名を取得しようとしていますがうまくいきません。
第一引数に「D:\test\aaa*」と指定して、aaa01、aaa02、aaa03のようなファイル名が取得したいと考えています。
FindFirstFileの戻り値として、INVALID_HANDLE_VALUEがくるため目的の動作になりません。
上記のような事はできないのでしょうか?
いろいろ調べてみましたが解決できなくて質問させていただきました。
以上ですが、よろしくお願いいたします。
No.3
- 回答日時:
このあたりは参考になるでしょう。
引数は変数ですか?変数はどう記述してますか?
char * name[] = "D:\test\aaa*" ; ですか?
char * name[] = "D:\\test\\aaa*" ; で\は\\にしてみましょう。
参考URL:http://msdn.microsoft.com/ja-jp/library/cc429233 …
この回答への補足
ご回答ありがとうございます。
指摘いただきました通り、「"D:\\test\\aaa*"」としてみましたが、結果は同様でした。
その他の原因で考えられるものはありますでしょうか?
以上です。
No.4
- 回答日時:
第一引数ですが、「"D:\\test\\aaa*"」としてますか?
この回答への補足
ご回答ありがとうございます。
指摘いただきました通り、「"D:\\test\\aaa*"」としてみましたが、結果は同様でした。
その他の原因で考えられるものはありますでしょうか?
ちなみに「\\」にする理由はエスケープシーケンスの意味でしょうか?
「"D:\\test\\aaa*"」はiniファイルより抽出するのでつける必要があるのかなと感じていました。
以上です。
No.5
- 回答日時:
一旦、SetCurrentDirectory("D:\\test"); として、カレントディレクトを"D:\test"へ移動しておいて、
そこで FindFirstFile("aaa*", &fd); としてみてもダメでしょうか?
あと、GetLastError関数で拡張エラー情報を取得したら何かわかりませんか?
int main(void) {
HANDLE hFind;
WIN32_FIND_DATA fd;
/* カレントディレクトリを変更 */
SetCurrentDirectory("D:\\test"); /* 戻り値のチェックを行うこと */
hFind = FindFirstFile("aaa*", &fd);
if (hFind == INVALID_HANDLE_VALUE) {
fprintf(stderr, "ファイルを取得できません。\n");
return 1;
}
/* 次々列挙 */
do {
//ファイル名の表示
printf("%s\n", fd.cFileName);
} while (FindNextFile(hFind, &fd));
/* 開放 */
FindClose(hFind);
return 0;
} //end of main
No.6ベストアンサー
- 回答日時:
バカにしているようで申し訳ないですがもう一度設定周りを見直してみてはいかがてしょう?
良くあるケースだと。
1. INIに記述したPATHが間違えてる
2. INIからPATHを取得できてない
3. ほんとに存在しない。
ですね。
1.と2.については、INIから取得したPATHを printf() 等にて出力して
その出力されたPATHを dir コマンドに渡してあげるコトで確認できると思います。
手入力じゃなくてコピペするようにしてください。
あとINIに指定したものを取得してFileFindFirstにわたすのなら\のエスケープは不要です。
エスケープはコンパイラの都合ですから。。
1.2.3.やってもだめなら、他の回答にあるように GetLastErrorから終了の原因を突き止めるしかありませんね。
No.7
- 回答日時:
引数を取得するところと、それを使ってFindFirstFileコールするまでをソース引用で見せていただければみなさんのコメントがつきやすいんじゃないでしょうか。
このドキュメントはご覧になってますよね。
http://msdn.microsoft.com/ja-jp/library/cc429233 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) セルの値からファイルを複数作りたい 2 2022/10/06 12:42
- Excel(エクセル) セルを参照して条件で値をコピーする 3 2023/02/08 17:45
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) VBA GetAttrについて教えてください 2 2022/12/22 15:25
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
charからLPTSTRへの変換方法
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
あるディレクトリ内のファイルをファイル名でソートして取得
C言語・C++・C#
-
-
4
char str[256]の256の意味は?
C言語・C++・C#
-
5
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
6
ファイルやディレクトリの存在確認を行う方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
Excelで勤怠管理をしたいです。...
-
VB.NETで DataRow()を利用して...
-
imgctl.dllを使って読み込んだ...
-
VBA リストボックス複数選択か...
-
VBA:小数点以下の数字を取得で...
-
自動的に高さ指定していないt...
-
エクセルVBAで複数選択できるよ...
-
DataGridView 複数選択で行番...
-
asp.netでtextboxの値を取得
-
IFRAME内のURLを取得したです。
-
ListView 項目の選択/選択解除...
-
Flexgridで選択行の列の値を取...
-
GetLongPathName関数について
-
整数の桁数が取得できません
-
Google Apps Script で、Web上...
-
利用者側のMACアドレスを取得し...
-
フォルダ一覧取得の設計について
-
リクエストからArrayListのデー...
-
ListViewで複数選択された項目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
like演算子内に変数って使えな...
-
count(*)で取得した値をJAVAの...
-
利用者側のMACアドレスを取得し...
-
データ数をカウントしたいのですが
-
JavaScriptでWindowsログオンID...
-
ListViewで複数選択された項目...
-
Flexgridで選択行の列の値を取...
-
エクセルVBAで複数選択できるよ...
-
VBA リストボックス複数選択か...
-
getParameter と getAttribut...
-
Excel VBA でログインしてい...
-
VBScriptで数値にコンマを付け...
-
Spreadの選択行の取得について
-
コンボボックスの表示は最大何行?
-
コンボボックス表示文字列を取...
-
VB .netにて現在時刻+1時間後...
おすすめ情報