- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォルダの削除について)
C言語でフォルダの削除方法についての質問
このQ&Aのポイント
- C言語でフォルダの削除方法が分からず困っています。ファイルの削除は"remove()"で行うことができましたが、フォルダは同じ方法ではできないようです。別の方法があればそれでもいいですし、"SHFileOperation()"の使い方を知りたいのでよろしくお願いします。
- "SHFileOperation()"を使用してフォルダの削除を試みましたが、エラーが発生しました。"SHFILEOPSTRUCT"の値の設定がうまくいっていない可能性があります。
- 現在は"SHFileOperation()"ではなく、フォルダの削除に"remove()"を使用しています。しかし、別の方法があれば教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
FOF_SIMPLEPROGRESSが指定されていますね。 このときは、lpszProgressTitleが有効になるので構造体を初期化しないとエラーになるでしょう。 もしかしたらNULLでもだめで、文字列を指定しないといけないかも。 _rmdirは、空のディレクトリしか削除できない点に気をつけてくださいね。
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
回答No.1
ファイル名は、最後にNULL文字が2つ連続する必要があります。 shfileop.pFrom = "C:\\TEST\\testfolder\0"; として試してみてください。
質問者
お礼
回答ありがとうございます。 早速"\0"を追加してやってみましたが、 他に問題があったようでエラーが発生してしまいました。 上司にも相談していろいろ聞いてもらったところ、 "_rmdir関数"というものがあり、それを使うようにと言われました。 その方法で試してみたら正常にフォルダが削除されたので、"_rmdir()"を使用することにします。 "SHFileOperation()"でのエラーについては、 時間を見つけて解決してみようと思います。 ありがとうございました。 ちなみに、_rmdir関数の使用法は以下の通りです。 intRet = _rmdir(strDirPath); (strDirPath = 削除対象ディレクトリパス)
お礼
ありがとうございます。 おっしゃるとおり、構造体の初期化に問題があったようです。 構造体の初期化をしてから実行してみたところ、 正常にフォルダを削除することができました。 これからも何かありましたらよろしくお願い致します。