Я - совершенно новый разработчик c, и у меня есть небольшая проблема с libcurl. Я много раз искал в сети, но мне не удалось найти ответ, который работал на меня.c libcurl CURLOPT_POSTFIELDS странная ошибка
Это чистый c, не ++.
У меня есть этот код и запрос не удается
char * write_url(MyData data)
{
char *field = malloc(20 * sizeof(char));
if (strcmp(data.sensorName,"Temperature")==0){
sprintf(field,"&temperature=%.2f",data.measure);
}
CURL *curl;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/");
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, field);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
Но если я изменю
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, field);
для
char *data="&temperature=20";
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
Это работает. Но я хочу передать данные через эту функцию!
Спасибо!
Попробуйте напечатать переменную 'field' после вашего if. Что это такое? Что происходит, когда условие в if неверно? Тогда 'field' не инициализируется. Вы должны инициализировать его, по крайней мере, пустой строкой. – Guillermo
Если strcmp fail field не инициализируется, это приводит к неопределенному поведению. – 2501