Я выполнив следующий завиток вызов для чтения данных с моего сайта:Curl Ошибка записи при попытке записи данных, считанных в файл
curl_easy_setopt(handle, CURLOPT_URL, "http://mysite.com");
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_data);
CURLcode code = curl_easy_perform(handle);
Это мой метод обратного вызова, write_data:
size_t write_data(void *buffer, size_t len, size_t nmemb, void *userp) {
const char* _file = "file_path";
FILE* _dataFile = fopen(_file, "a+");
if (!_dataFile) {
logMsg("Failed to open file to write to it");
exit(EXIT_FAILURE);
}
int num = fprintf(_dataFile, "%s", (char *) buffer);
fclose(_dataFile);
return num;
}
Я получаю данные в кусках и на gdb'ing Я понял, что в последнем вызове я получаю 12303 байта, но пишу 12310. Мне кажется, что проблема в том, как я пишу файл содержимого, путем переноса буфера на символ.
Итак, мой вопрос - это лучший способ записи данных (в файл), чтение из вызова Curl без дополнительной копии? Если я сделаю копию буфера, полученную malloc'ing массивом символов с байтами nmemb
и добавив это в файл, этот метод будет успешным.
Я также хотел бы знать, есть ли какая-либо другая функция для записи форматированных данных в файл, который я могу использовать вместо fprintf.