path[ ]="folder" ;
strcat(path,fname) ;
MoveFile(fname,path) ;
機能は、ファイル名機能は、ファイル名にパスを付加されたWINDOWS.HののMoveFile関数を使用する方法
path[ ]="folder" ;
strcat(path,fname) ;
MoveFile(fname,path) ;
機能は、ファイル名機能は、ファイル名にパスを付加されたWINDOWS.HののMoveFile関数を使用する方法
あなたがpath
を初期化する方法でパスを先頭に追加されたWINDOWS.HののMoveFile関数を使用する方法"folder"
を保持する余地があるだけで、メモリがあふれずに何も追加することはできません。より安全になるのWin32 API PathCombine()
(または関連する)関数(またはboost::filesystem
のようなサードパーティのソリューション)を使用して、しかし
char path[MAX_PATH] = {};
strcpy(path, "folder");
strcat(path, "\\");
strcat(path, fname);
:あなたは、それのために多くのスペースを割り当てることなどが必要
char path[MAX_PATH] = {};
PathCombine(path, "folder", fname);
これで、MoveFile()
の最初の引数としてfname
が渡されます。 fname
にはファイル名とパスのみが含まれていると仮定すると、MoveFile()
は、呼び出し元プロセスの現在の作業ディレクトリ(プロセスの有効期間中に変更可能な(通常は変更する))に対する相対パスでファイルを検索します。決して相対パスに頼らず、常に絶対パスを使用してください。
char src[MAX_PATH] = {};
strcpy(src, "source folder");
strcat(src, "\\");
strcat(src, fname);
// or: PathCombine(src, "source folder", fname);
char dst[MAX_PATH] = {};
strcpy(dst, "destination folder");
strcat(dst, "\\");
strcat(dst, fname);
// or: PathCombine(dst, "destination folder", fname);
MoveFile(src, dst);
お返事ありがとうございました。 私は問題が何かを考え出しました。 実際には、パスをループして連結していたので、各反復で新しいファイル名がパスに追加されたため、ファイル名が変更されます。
しかし、私は各繰り返しでどこに連結したいかの位置に '\ 0'のヌル文字を割り当てて解決しました。