
先日、皆さんに教えていただき
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
fopenで別ディレクトリにファイルをオープンしたい
C言語・C++・C#
-
ファイル出力の場所を指定
C言語・C++・C#
-
ファイルやディレクトリの存在確認を行う方法
C言語・C++・C#
-
4
Debug Assertion Failed?
C言語・C++・C#
-
5
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
6
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
7
C言語---ファイルに出力したデータをすべて消去する方法
C言語・C++・C#
-
8
fopenでのパス指定
C言語・C++・C#
-
9
C言語を用いたファイルの一括削除について
C言語・C++・C#
-
10
C++でのCRLFについて
C言語・C++・C#
-
11
画面を強制的に再描画させる方法
C言語・C++・C#
-
12
fopne で失敗する原因
C言語・C++・C#
-
13
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
14
charからLPTSTRへの変換方法
C言語・C++・C#
-
15
#defineの定数を文字列として読み込む
C言語・C++・C#
-
16
fgets( ) の返り値は何?
C言語・C++・C#
-
17
C言語での引数の省略方法
C言語・C++・C#
-
18
C言語でファイル名を取得
C言語・C++・C#
-
19
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
20
CStringをwchar_tに変換したい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ファイル名に特定の文字列を含...
-
5
会社のネットワーク上のファイ...
-
6
VBScriptで作るファイル移動プ...
-
7
ExcelVBAでフォルダへのハイパ...
-
8
バッチファイルで指定フォルダ...
-
9
Windows10でコマンドプロンプト...
-
10
Excel VBA マクロ 選択したフォ...
-
11
【VBS】古い日付のフォルダを削...
-
12
Debug フォルダは消していいの?
-
13
HTMLで保存先を指定する方法に...
-
14
カレントフォルダって?
-
15
デスクトップにだけ保存できない!
-
16
ファイル名と同名のフォルダを...
-
17
excel VBA Dirにて検索したフォ...
-
18
Access VBA で フォルダ権限...
-
19
VBでフォルダをパスワードでロ...
-
20
パス名に2バイト文字(マルチバ...
おすすめ情報
公式facebook
公式twitter