C ++ fopen () возвращает указатель NULL на некоторые Windows - PullRequest
0 голосов
/ 05 августа 2020

Я разрабатываю небольшую программу обновления для своего фреймворка. В частности, файл написан на C ++, и когда я пытаюсь загрузить файл, используя следующий код, функция fopen возвращает NULL. Но дело в том, что я тестировал это программное обеспечение на разных машинах с одной и той же ОС (Windows 10), и на некоторых из них они возвращают NULL, другие просто загружают и правильно записывают файл. У тебя есть идеи? Я также попытался ОБРЕЗАТЬ имя файла, чтобы избежать невидимых символов. Вот код для загрузки файла, который я использовал:

std::vector<unsigned char> resp = http_request(url, "GET", NULL, NULL, "", user_agent);
if (resp.empty()) {
    send_output("ERROR: No response while downloading: " + url);
    return;
}
string filename = url.substr(url.rfind("/") + 1);
filename = trim(filename);
if (filename.empty()) {
    filename = "downloaded";
}
FILE* f = fopen(filename.c_str(), "wb");
if (f == NULL) {
    log("ERROR: Could not open file for writing: " + filename);
    return;
}
fwrite(&resp[0], 1, resp.size(), f);
fclose(f);

Спасибо, ребята, за помощь!

...