• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォルダの削除について)

C言語でフォルダの削除方法についての質問

このQ&Aのポイント
  • C言語でフォルダの削除方法が分からず困っています。ファイルの削除は"remove()"で行うことができましたが、フォルダは同じ方法ではできないようです。別の方法があればそれでもいいですし、"SHFileOperation()"の使い方を知りたいのでよろしくお願いします。
  • "SHFileOperation()"を使用してフォルダの削除を試みましたが、エラーが発生しました。"SHFILEOPSTRUCT"の値の設定がうまくいっていない可能性があります。
  • 現在は"SHFileOperation()"ではなく、フォルダの削除に"remove()"を使用しています。しかし、別の方法があれば教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

FOF_SIMPLEPROGRESSが指定されていますね。 このときは、lpszProgressTitleが有効になるので構造体を初期化しないとエラーになるでしょう。 もしかしたらNULLでもだめで、文字列を指定しないといけないかも。 _rmdirは、空のディレクトリしか削除できない点に気をつけてくださいね。

io11
質問者

お礼

ありがとうございます。 おっしゃるとおり、構造体の初期化に問題があったようです。 構造体の初期化をしてから実行してみたところ、 正常にフォルダを削除することができました。 これからも何かありましたらよろしくお願い致します。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

ファイル名は、最後にNULL文字が2つ連続する必要があります。 shfileop.pFrom = "C:\\TEST\\testfolder\0"; として試してみてください。

io11
質問者

お礼

回答ありがとうございます。 早速"\0"を追加してやってみましたが、 他に問題があったようでエラーが発生してしまいました。 上司にも相談していろいろ聞いてもらったところ、 "_rmdir関数"というものがあり、それを使うようにと言われました。 その方法で試してみたら正常にフォルダが削除されたので、"_rmdir()"を使用することにします。 "SHFileOperation()"でのエラーについては、 時間を見つけて解決してみようと思います。 ありがとうございました。 ちなみに、_rmdir関数の使用法は以下の通りです。 intRet = _rmdir(strDirPath); (strDirPath = 削除対象ディレクトリパス)