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.
 
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.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı