gpt4 book ai didi

c++ - fopen 产生 NULL 文件指针 Solaris

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:53 24 4
gpt4 key购买 nike

我正在尝试创建一个回调函数,然后使用 libcurl 将检索到的内容写入文件。该程序在 LinuxWindows 中运行良好,但是,fopen 操作在 solarix_x86 中失败。 myvector 包含要复制的 url 文件列表,PATH_SEPARATOR 是格式化字符串路径的宏,具体取决于平台(UnixWindows).

  vector<string>::iterator it;

for( it=myvector.begin() ; it < myvector.end(); it++ ){
string dest = "/home/files/" + PATH_SEPARATOR + *it // PATH_SEPARATOR IS A MACRO
curl_easy_setopt(curl, CURLOPT_URL, it->c_str());
curl_easy_setopt(curl, CURL_WRITEFUNCTION, write_data);

file = fopen(dest.c_str(), "w+b");
if(file == NULL){
throw std::runtime_error("FILE IS NULL, CAN'T OPEN\n");
}

curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);
curl_easy_perform(curl);
fclose(file);
}

和函数write_data:

static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream){
size_t written = fwrite(ptr, size, nmemb, (FILE*)stream);
return written;
}

我怀疑与 "w+b" 标志有关....有什么想法吗?

********* ***更新**********

errno=2

最佳答案

不要混淆字符和字符数组:您需要 "w+b"。注意引号。

一个好的(或“正确操作”)的编译器应该警告你你正在使用“多字节字符常量”(即你的'w+b'),这是一个C++ 的晦涩功能几乎没有意义。

关于c++ - fopen 产生 NULL 文件指针 Solaris,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11669426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com