Можно ли разово присвоить символы к char

Например у меня есть код

#include <iostream>
#include <windows.h>
#include <shlobj.h>

bool GetPath(char* folder)
{
    if (SHGetFolderPathA(0, CSIDL_PROFILE, 0, 0, folder) == S_OK)
    {
        return 1;
    }
    return 0;
}

bool fileExist(const char* path)
{
    if (GetFileAttributesA(path) != INVALID_FILE_ATTRIBUTES)
    {
        return 1;
    }
    return 0;
}

int main()
{
    char* path;
    path = (char*)malloc(MAX_PATH);
    GetPath(path);
    if (fileExist(lstrcatA(path, "\\AppData")))
    {
        std::cout << path << std::endl;
    }
    std::cout << path << std::endl;
    free(path);
    return 1;
}

Могу ли я как то разово в условии в main присвоить переменной path определенную строку? Или для этого мне нужно обьявлять новую переменную? Если я использую lstrcatA то переменная меняется на всю программу, а мне нужно лишь присвоить в рамках условия


Ответы (1 шт):

Автор решения: KoVadim

вот это выражение

lstrcatA(path, "\\AppData")

модифицирует переменную path и возвращает указатель на нее. И я так понимаю, это и есть проблемой.

Оставим за кадром то, что Вы ставите метку с++, используете cout, но при этом не используете std::string.

char path[MAX_PATH+1];
char apppath[MAX_PATH+1];
GetPath(path);
lstrcatA(apppath, path);
lstrcatA(apppath, "\\AppData")
if (fileExist(apppath))
{
    // будем последовательны
    puts(apppath);
}
puts(path);
→ Ссылка