C kodu derleme hatası

Katılım
27 Ağustos 2020
Mesajlar
2.187
Çö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.
 
Bir hata aldığında, ardında diğer işlemleri de etkiler. Her zaman ilk hatayı bulup düzelt. 10 nolu satırda 11 nolu sütun hata kaynağı görünüyor.
 
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.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…