簡體   English   中英

C ++將文件地址保存到char []

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM