C kodu derleme hatası

CinarYilmaz

Hectopat
Katılım
27 Ağustos 2020
Mesajlar
2.180
Çözümler
18
Yer
Istanbul
[CODE lang="c" title="main.c"]#include <stdio.h>
#include <curl/curl.h>
#include <string.h>

int main(void)
{
char *veri;
char *data;
printf("Veri Girin: ");
scanf("%c", &veri);
CURL *curl;
CURLcode res;
data = strcat("https://growforum.tk/api/?data=", veri);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, data);

res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));

curl_easy_cleanup(curl);
}
printf("Sonuç: %d", res);
return 0;
}[/CODE]
Kod bu. Aldığım hata ise şu: (gcc main.c -o main komutu)
Kod:
main.c: In function ‘main’:
main.c:10:11: warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘char **’ [-Wformat=]
   10 |   scanf("%c", &veri);
      |          ~^   ~~~~~
      |           |   |
      |           |   char **
      |           char *
/usr/bin/ld: /tmp/ccZGjztL.o: in function `main':
main.c:(.text+0x1a6): undefined reference to `curl_easy_init'
/usr/bin/ld: main.c:(.text+0x1d2): undefined reference to `curl_easy_setopt'
/usr/bin/ld: main.c:(.text+0x1de): undefined reference to `curl_easy_perform'
/usr/bin/ld: main.c:(.text+0x1f1): undefined reference to `curl_easy_strerror'
/usr/bin/ld: main.c:(.text+0x21b): undefined reference to `curl_easy_cleanup'
collect2: error: ld returned 1 exit status
Sanırım birinci hata %c kullanmam kaynaklı. Ama 2. hatayı neden alıyorum bilmiyorum. libcurl4-gnutls-dev paketi kurulu.
 
Hatan "%c" kullanman değil hatan pointer arguman vermene rağmen adress of '&' operatorünü kullanman olmuş. Bu şekilde Pointer'ın adresini arguman olarak vermiş oluyorsun, derleyici senden char değişkenin adresini istiyor. Hata kodu da bu yüzden char** arguman vermişsin diyor. Diğer hatanın seninle ilgisi yok.
 
Hatan "%c" kullanman değil hatan pointer arguman vermene rağmen adress of '&' operatorünü kullanman olmuş. Bu şekilde Pointer'ın adresini arguman olarak vermiş oluyorsun, derleyici senden char değişkenin adresini istiyor. Hata kodu da bu yüzden char** arguman vermişsin diyor. Diğer hatanın seninle ilgisi yok.
Hocam şimdi derlemede sorun olmuyor ama programı çalıştırırken veri girdikten sonra Parçalama hatası (Çekirdek döküldü) alıyorum.
 
Hocam şimdi derlemede sorun olmuyor ama programı çalıştırırken veri girdikten sonra Parçalama hatası (Çekirdek döküldü) alıyorum.

Veri değişkeninin işaret ettiği yere hafızada yeterince yer ayırılmadığı için bu hatayı alıyorsun. Ya char veri[16] gibi bir dizi ile çöz ya da malloc kullanarak dinamik olarak yer ayır hafızada. Not: Dizideki 16 girebileceğin en yüksek miktarda karakter olacak.

Edit: Ayni sekilde dataya da yer ayır o da boş duruyor.
 

Geri
Yukarı