先日、皆さんに教えていただき
Cで出力ファイルを指定のフォルダに出す方法が上手く出来ました。
具体的には、↓こうやって指定しました。
sprintf( buff, "%s\\%s", path, filename );
やっていて思ったのですが、
この方法だと、指定フォルダが最初から無いとエラーが出てしまいます。
フォルダが無かったら、作成し、その中にファイルを出力していってくれる。という方法はできるものなのでしょうか?
もしできるようなら教えて下さい!!
よろしくお願いします!
No.5ベストアンサー
- 回答日時:
★回答ではないが余談。
・koko_u_ さんありがとう。
気づくとアンダーバーの関数名で置き換わっているみたいですね。
他にも気づくといろいろ置き換わっていますね。
C 関数、最近使っていないのでアンダーバーの関数名で調べてみます。
・ありがとうございました。
●質問者さんへ。
・_mkdir() 関数が使える場合はその関数でもフォルダ(ディレクトリ)が作成できます。
それでは。
参考URL:http://www5c.biglobe.ne.jp/~ecb/c/12_14.html
みなさん。丁寧な回答ありがとうございます!!
とても助かります!
さっそく、教えていただいたもの試してみたいと思います!!
ありがとうございました!!!
No.3
- 回答日時:
★回答者 No.1 です。
・今、調べたら mkdir() 関数がないね。何で?昔使った記憶があったのに?
仕方が無いので Win32 API の CreateDirectory() を使って作成して下さい。
また、Win32 API を使うのならフォルダの有無をチェックしてフォルダが
存在していない場合に作成するようにします。
・下のようになります。
サンプル:
#include <shlwapi.h>
#include <windows.h>
if ( PathIsDirectory(path) ){ ←フォルダ有無
CreateDirectory( path, NULL ); ←フォルダ作成
}
sprintf( buff, "%s\\%s", path, filename );
fp = fopen( buff, "w" );
:
fclose( fp );
参考文献:
http://nienie.com/~masapico/api_PathIsDirectory. …→『PathIsDirectory』
http://nienie.com/~masapico/api_CreateDirectory. …→『CreateDirectory』
http://nienie.com/~masapico/api_MakeSureDirector …→『MakeSureDirectoryPathExists』
↑
この関数を使うと一気に深い階層のフォルダを作成できます。
CreateDirectory() では1つづつしかフォルダを作成できません。
つまり c:\path1\path2\path3 というフォルダを順番に
c:\path1
c:\path1\path2
c:\path1\path2\path3
と3段階で作成します。でも、MakeSureDirectoryPathExists() なら一気に作成してくれます。
・以上。
No.2
- 回答日時:
ファイルのオープンはどのようなコードにしてますか?
一度にフォルダを作成して出力ファイルを作成するなどという便利な命令はありません
WinAPIなら
hFile = CreateFile( ... );
if (hFile == NULL ) {
DWORD dwError = GetLastError();
if ( dwError == ERROR_PATH_NOT_FOUND ) {
// フォルダーを作成
CreateDirectory(...);
// ファイルの再オープン
hFile = CreateFile( ... );
} else {
// 他のエラーの対処
}
}
といった具合でしょう
# CreateFile/CreateDirectoryの引数などは ヘルプで確認してください
No.1
- 回答日時:
★先にフォルダを作成させれば良い。
・単純にフォルダを作成させるのです。
mkdir( path );
sprintf( buff, "%s\\%s", path, filename );
↑
mkdir() 関数は既にフォルダがあればエラーを返しますが『無視』すれば良いと思います。
そうすれば、フォルダが存在しないと自動的に作成しますのでファイルもエラーにならない。
・以上。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/02 11:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 10:35
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ファイル出力の場所を指定
C言語・C++・C#
-
fopenで別ディレクトリにファイルをオープンしたい
C言語・C++・C#
-
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
-
4
画面を強制的に再描画させる方法
C言語・C++・C#
-
5
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
6
ファイルやディレクトリの存在確認を行う方法
C言語・C++・C#
-
7
あるディレクトリ内のファイルをファイル名でソートして取得
C言語・C++・C#
-
8
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
9
C言語 配列の長さの上限
C言語・C++・C#
-
10
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
11
関数から配列を返すには?
C言語・C++・C#
-
12
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
13
C++で文字列の右端から特定の文字までの文字列を
C言語・C++・C#
-
14
C言語でのフォルダ作成
C言語・C++・C#
-
15
ダイアログ表示時にチェックボックスにチェックされている状態にするには?
C言語・C++・C#
-
16
MakeSureDirectoryPathExists
C言語・C++・C#
-
17
fopenでファイル名に、変数を使いたい
C言語・C++・C#
-
18
Cでのネットワークファイルの読み書き
C言語・C++・C#
-
19
ハンドルはポインタか
C言語・C++・C#
-
20
C言語での引数の省略方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
【マクロ】ファイル名の日付に...
-
フォルダ内のPDFファイル名を変...
-
windowsでテキストファイルの各...
-
Excel VBA コードを教えてくだ...
-
C ファイル出力で、フォルダが...
-
バックアップ(世代管理)機能...
-
vbsで選択ダイアログを表示した...
-
エクセル VBA ファイルをフォ...
-
ツリービューを使って、エクス...
-
カレントフォルダって?
-
Excel VBA で フォルダ名の一部...
-
ディレクトリ名変更してコピー...
-
パス名に2バイト文字(マルチバ...
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
excelマクロ 冒頭3文字が一致す...
-
バッチファイルで指定フォルダ...
-
エクセル 一つ上の階層の別フ...
-
バッチファイルでフォルダコピー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報