私はfopen("aaa\bbb\ccc\myfile.txt","w")
を使用して出力ファイルを作成しています。しかし、フォルダaaa
,とccc
は存在しません。この問題を解決する最良の方法は何ですか?必要なフォルダをすべて作成するようにfopenに依頼する標準的な方法はありますか?fopenですべての必要なフォルダを作成するには
9
A
答えて
-1
fopen()は、ディレクトリファイルではなくテキストまたはバイナリファイルの入力ストリームを開くために使用されます。存在しないディレクトリを保持するパスにファイルをオープンしたい場合、/sys/stat.hヘッダファイルのmkdir()メソッドを使うことをお勧めします。ディレクトリが準備できたら、必要なファイルを開くためにfopen()を使うことができます(まだ存在していなければ作成することもできます)。 これは私が私の$ HOMEフォルダのディレクトリにファイルを作成するために使用されるアプローチである: -
char* home_dir= getenv("HOME");
/*creates the directory with specified modes*/
mkdir(strcat(home_dir, "/make-a-note/"),S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
/*used the strcat() to generate the file-path.*/
personal_work=fopen(strcat(home_dir,"personal_work.txt"),"a+");
+0
そのコードを使用しないでください。 'strcat()'呼び出しは悪いです。環境変数の内容を保持するバッファを確実にオーバーランします。この未定義の動作は、他の環境変数を破棄したり、悪化させる可能性があります。 – cmaster
関連する問題
- 1. Delphiで作成するすべてのクラスにはデストラクタが必要ですか?
- 2. Zipファイルのすべてのフォルダをzipで作成する
- 3. は、スクリプト/プラグインで.gitフォルダを作成する必要がありますか?
- 4. Pythonスクリプトから必要なすべてのパッケージをフォルダにまとめます。
- 5. は、私は次のようになります。すべての言語のリストを作成する必要が
- 6. ルーティングするフォルダが必要です。そのフォルダ内のすべてのファイルを利用できるようにする必要があります。
- 7. C#で必要なプロパティを作成するには?
- 8. フォルダ内のすべてのサブフォルダのファイルリストを作成するbash
- 9. PHP fopen($ file)$ファイルはエスケープする必要がありますか?
- 10. プログラムでXDGフォルダを作成する必要がありますか?
- 11. 手動で.m2/repositoryフォルダを作成する必要があります
- 12. すべてのiVarsのプロパティを作成する必要がありますか?
- 13. これはすべてJSONに必要なのですか?
- 14. Virtualenvはローカルピップを作成していないので、本当に必要です。
- 15. PHPでフォルダを作成するには?
- 16. iosでフォルダを作成するには
- 17. fopenで作成したファイルから要素のコンテンツを削除する
- 18. 必要な形式でファイルパスを作成する方法は?
- 19. fopenを使用せずにPHPでPDFを作成する
- 20. ユーザウィジェットの作成にphp fopenを使用していますか?
- 21. フォームフィールドのすべては、私は必要なパラメータを使用し、すべてのフィールドに追加しますが、そのすべてで動作していないのです、こんにちは、私は私のフォームに必要なすべてのフィールドを作成しようとしています
- 22. ターゲットを作成するには、noルール「mesh2D.h」、「すべての-AM」によって必要
- 23. XMLファイルを作成するには何が必要ですか?
- 24. すべてのiOSデバイスのバックグラウンドで作成する必要のあるグラフィックスは何ですか?
- 25. Log4jは必要な前に空のファイルを作成します
- 26. フラッシュファイルを作成するにはどのようなソフトウェアが必要ですか
- 27. XMLRPCのfopenがエラーを返す必要があります
- 28. モバイルコンテンツでフルスクリーンページを作成するには?私は必要なもの
- 29. Pythonでクラスを作成する必要性について
- 30. Applescriptで仲介フォルダを持つフォルダを作成するには?
いいえ、 'fopen'ディレクトリを作ることはありません。複数のレベルを作る拡張された 'mkdir()'について、[既に良い答えで質問されている](http://stackoverflow.com/questions/2336242/recursive-mkdir-system-call-on-unix/11425692)があります。あなたが望むものに似ています。 '' aaa/bbb/ccc/''で複数レベルのmkdirを実行し、 'fopen'を呼び出す必要があります。 –
ウィンドウの場合は、この記事の情報を使用することができますhttp://stackoverflow.com/questions/2834737/creating-new-folders-if-the-dont-exist-for-fopen – alexJones
一般に、それらのバックスラッシュを倍にすることを忘れないでください。 。 'fopen()'は単にディレクトリの作成をサポートしていませんが、もし存在するならば必要になります。 – unwind