ページ 11

フォルダを作成したい

Posted: 2008年10月23日(木) 15:57
by 山崎
山崎と申します。C++でのフォルダの作成の方法についてお伺いしたく参りました。
OSはXP,エディタはVisualStudio2008を使っております。

OpenCVで画像処理を施し、その結果の画像を新たにフォルダを作ってそこに保存したいと考えております。

//FileNameには画像処理前の画像名、ImageはopenCvのIplImage型で画像処理後のデータが入っています
char SaveFileName[100];
sprintf(SaveFileName,"%s\\NewImage.jpg",FileName);
cvSaveImage(SaveFileName,Image);

このような感じで、cppファイルがある場所と同じ場所に、画像処理前の画像名と同じ名前のフォルダをつくりそこに
cvSaveImageで画像ファイルを保存しようとしたのですが、できませんでした。

どのようにすれば、新しく任意の場所にフォルダを作成できるのでしょうか。
皆様のお力におすがりしたいと思います。

Re:フォルダを作成したい

Posted: 2008年10月23日(木) 16:42
by 御津凪
フォルダを作成する一番簡単な方法は、mkdir を使用する方法です。
#include <stdio.h>
#include <stat.h>
int main( void ){
	// "folder"というフォルダをカレントディレクトリ(通常実行したプログラムの場所)に作成
	if(mkdir("folder") == 0){ 
		// 成功
		printf("フォルダの作成に成功しました。\n");
	}
	else{
		// 失敗
		printf("フォルダの作成に失敗しました。\n");
	}
	return 0;
}
VisualStudio2008 からのプログラム起動では、
デフォルトでは作成された実行ファイルのディレクトリ(DebugやReleaseフォルダ)ではなく、
プロジェクトフォルダ(cppファイルなどが置かれている場所)がカレントディレクトリになります。
(プロジェクトプロパティのデバッグカテゴリで起動時のカレントディレクトリを変更できます)

Re:フォルダを作成したい

Posted: 2008年10月23日(木) 17:05
by 山崎
御津凪さん、ご返信頂きまことにありがとうございます。

お教えしていただいたmkdirを使ってみたのですが、
include ファイルを開けません。'stat.h': No such file or directory
というエラーが出てしまいます。

mkdir関数をネットで検索したところ、<stat.h>を<sys\stat.h>としているコードが見られたので
真似して<stat.h>を<sys\stat.h>に直して再度試してみたところ、今度は
'mkdir': 識別子が見つかりませんでした
というエラーが出ます。

どうすればmkdirを使えるでしょうか。
何度も申し訳ございません。

Re:フォルダを作成したい

Posted: 2008年10月23日(木) 17:21
by 御津凪
http://msdn.microsoft.com/en-us/library ... S.80).aspx で調べてみると、 VisualStudio では"mkdir"ではなく、"_mkdir"でした。
すみません。

インクルードも <direct.h> となっているようです。

(身近にあった処理系で探していたので、VS とは違っていました)

Re:フォルダを作成したい

Posted: 2008年10月23日(木) 17:32
by 山崎
御津凪さん
<stat.h>を<direct.h>にし、_mkdir()を用いたところ、
みごとにフォルダを作成することができました。

本当にありがとうございました。