我試圖做一個回調函數,然後使用libcurl
將檢索到的內容寫入文件。該程序在Linux
和Windows
中運行良好,但fopen
操作在solarix_x86
中失敗。 myvector
包含要複製的url文件的列表,並且PATH_SEPARATOR
是一個格式化字符串路徑的宏,具體取決於平臺(Unix
,Windows
)。fopen生成NULL文件指針Solaris
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"
標誌的東西....任何想法?
** * ** * ** * *** UPDATE ** * ** * ** * *
errno=2
。
''w + b''應該是''w + b「'。單引號=字符常量。雙引號=字符串常量。 – BoBTFish 2012-07-26 12:40:21
@BoBTFish 我已將它更改爲「w + b」,並且我遇到了同樣的問題 – cybertextron 2012-07-26 12:43:19
您是否擁有該文件夾的寫入權限? – Rolle 2012-07-26 12:52:49