[英]c++ save file address to char[]
我有一個問題,如果我想保存
char FileDirect[] = "C:\\Program Files\\"
所以用cout
打印這個
C:\\ Program Files \\
並編輯此文本也不起作用
char File[MAX_PATH], FileEdit[MAX_PATH], MoveDirect[MAX_PATH] = "C:\\Program Files\\";
short Seartch = 0, Slash = 0, MoveDirectChar = strlen(MoveDirect);
cout << MoveDirect << "\n";
GetModuleFileName(NULL, File, MAX_PATH);
for (int i = 0; i < 260; i++)
{
if (File[i] == '\\')
{
FileEdit[i + Slash] = '\\';
++Slash;
++Seartch;
FileEdit[i + Seartch] = File[i];
}
else
{
FileEdit[i + Seartch] = File[i];
}
}
for (int i = 260; i > 0; i--)
{
if (File[i] == '\\')
{
for (int b = 0; i < 260; b++)
{
++i;
++MoveDirectChar;
MoveDirect[MoveDirectChar] = File[i];
}
break;
}
}
MoveFile(FileEdit, MoveDirect);
cout << File << "\n";
cout << FileEdit << "\n";
cout << MoveDirect << "\n";
cin.get();
return 0;
如果我正確地閱讀了您的代碼,則似乎您正在嘗試提取調用程序的文件名( ConsoleApplication1.exe
),將其附加到MoveDirect
緩沖區的末尾( C:\\Program Files
),然后將程序的文件移至該新文件名( C:\\Program Files\\ConsoleApplication1.exe
)。
如果是這樣,則您的第一個循環可以用Win32 API PathFindFileName()
函數替換,而第二個循環可以用PathAppend()
函數替換。
#include <Shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")
char File[MAX_PATH];
char MoveDirect[MAX_PATH] = "C:\\Program Files\\";
GetModuleFileNameA(NULL, File, MAX_PATH);
PathAppendA(MoveDirect, PathFindFileNameA(File));
MoveFileA(File, MoveDirect);
cout << File << "\n";
cout << MoveDirect << "\n";
cin.get();
return 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.