2017-04-01 2 views

答えて

0

あなたが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

お返事ありがとうございました。 私は問題が何かを考え出しました。 実際には、パスをループして連結していたので、各反復で新しいファイル名がパスに追加されたため、ファイル名が変更されます。

しかし、私は各繰り返しでどこに連結したいかの位置に '\ 0'のヌル文字を割り当てて解決しました。

関連する問題