- ベストアンサー
VC++フォルダの操作 - 中学生がプログラミングの質問
- VC++でプログラミングを勉強している中学生が、フォルダの操作に関する質問をしています。質問内容は「SOFTフォルダ内に予め「DATA」というフォルダを作る方法はあるか」や「テキストボックスの文字列と同じ名前のフォルダを作る方法はあるか」です。
- VC++のコードでフォルダを作成する方法について、中学生が質問しています。現在作成しているソフトの要件として、「SOFTフォルダ内に予め「DATA」というフォルダを作りたい」ということや、「テキストボックスの文字列と同じ名前のフォルダを作りたい」ということがあります。
- 中学生がVC++でプログラミングを勉強している中で、フォルダの操作について質問しています。具体的には、「SOFTフォルダ内に予め「DATA」というフォルダを作成する方法はあるか」ということや、「テキストボックスの文字列と同じ名前のフォルダを作成する方法はあるか」ということについてです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
通常、ソフトが使うフォルダは、インストール時にインストーラで作らせるか、プログラムが起動する度に一度だけフォルダが存在するかどうか調べて、なければ作るという感じにします。 場合によっては、使う人が間違って消しちゃったりしますしね。 なお、フォルダが存在するか否かについては、FindFirstFile()を使います。 参考 → http://nienie.com/~masapico/api_FindFirstFile.html あと、_mkdir()の仕様についてはANo.1の方が言っていますので、作られない原因のもう1つの理由を書いておきますと、フォルダとして使える文字というのは決まっていて、半角の:*?<>"| は使えないことになっています。また、¥や/もフォルダ名として使用できません。これらはパス区切りとして認識されますので。 エクスプローラでフォルダをつくり、そこに半角の<を入力してみてください。XPならリターンキーで確定した際に、Win7なら入力した際に、使えない文字として表示されます。 なので、_mkdir()に指定するパス名にこれら使用不可文字を入れたい場合は、全角で代用する、アンダーバーに変えてしまう、など、別の文字に変換する必要があります。 テキストボックスに入力した文字そのままを作成するのは使用不可文字が含まれていたらエラーとする、などのチェックが必要です。(これは使えません、等のエラーを表示して作らせない)
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
少なくとも > _mkdir("./DATA/textDirName -> Text"); これは 「./DATA/」 の下に 「textDirName -> Text」 というフォルダを作るものだから、目的の動作にはなりません。 _mkdirに指定するのは文字列ですから、予めsprintfとかstrcatとか、std::stringとかCStringとか、とにかくtextDirName->Text の内容を取り出して、 「./DATA/作成したいフォルダ名」 という文字列を作った上で_mkdirに与えないと。 // PerlとかPHPとか、スクリプト言語だと文字列中で変数の展開してくれるものもありますが、 // Cにはありません。 あと、_mkdirは一段しかフォルダを作らないので、 ./DATAまでは先に_mkdirするか作っておく必要があります。 さらに、.exeがあるのがSOFTフォルダだとしても、実行時フォルダがSOFTとは限りません。 SOFTの下に作るなら、別途実行ファイルの場所を調べる必要があります。
お礼
ありがとうございます。 あらかじめ文字列を作る、ですか・・・ 早速試してみます!
お礼
インストーラという方法はいいですね。 FindFirstFile()は早速書き足してみようと思います。 _mkdirの件に加えても事前にフォルダを作成する方法なども教えてくださったので、今回はベストアンサーにさせていただきます