CodeBlanks Logo Icon CodeBlanks

stdlib.h

  • C kursu
  • Orta seviye
  • Ders 82/116
  • 4 dk

stdlib.h içindeki malloc, exit, atoi gibi fonksiyonları öğrenirsin.

stdlib.h

<stdlib.h> başlığı, C'nin en çok kullanılan genel amaçlı işlevlerini içerir: bellek ayırma (malloc), programdan çıkış (exit), dizgi–sayı dönüşümü (atoi) ve hızlı sıralama (qsort).

malloc'u önceki gruplarda gördün; şimdi diğer üçüne bakalım. exit(1) programı hemen sonlandırır; hata durumunda kullanılır. atoi("42") bir dizgiyi tamsayıya çevirir ve 42 döndürür; dönüştürülemeyen karakterlerde 0 verir. qsort bir diziyi sıralar; bir karşılaştırma işlevi ister. Bu işlevler C programlarının temel yapı taşlarıdır; neredeyse her gerçek projede kullanılırlar.

qsort kullanımı

qsort genel amaçlı bir sıralama işlevidir. Herhangi bir türdeki diziyi sıralayabilir; bunun için bir karşılaştırma işlevi ister.

İmza: void qsort(void *base, size_t count, size_t size, int (*cmp)(const void *, const void *)). base dizinin başlangıcı, count eleman sayısı, size her elemanın bayt büyüklüğü, cmp ise karşılaştırma işlevidir. Karşılaştırma işlevi iki const void * alır ve negatif, sıfır ya da pozitif döndürür. Örnek: int cmp(const void *a, const void *b) { return *(int*)a - *(int*)b; }. Bu, iki tamsayıyı küçükten büyüğe sıralar. Çağrı: qsort(arr, 3, sizeof(int), cmp);. Artık arr sıralıdır.

Uygulama atoi ve qsort

int cmp(const void *a, const void *b) yaz: return *(int*)a - *(int*)b;. main'de const char *s = "42";, int n = atoi(s);, int arr[] = {3, 1, 2};, qsort(arr, 3, sizeof(int), cmp);, printf("%d %d %d %d\n", n, arr[0], arr[1], arr[2]);.

Başlangıç kodu

main.c
#include <stdio.h>
#include <stdlib.h>

// cmp: iki int'i karşılaştır (qsort için)
// main: atoi ile "42" dizgisini tamsayıya çevir
// {3, 1, 2} dizisini qsort ile sırala
// printf ile n ve sıralı diziyi yazdır

int main(void) {
    // buraya yaz
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <stdlib.h>

int cmp(const void *a, const void *b) {
    return *(int*)a - *(int*)b;
}

int main(void) {
    const char *s = "42";
    int n = atoi(s);
    int arr[] = {3, 1, 2};
    qsort(arr, 3, sizeof(int), cmp);
    printf("%d %d %d %d\n", n, arr[0], arr[1], arr[2]);
    return 0;
}

Beklenen çıktı

42 1 2 3

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 atoi("42") çağrısı ne döndürür?

  • 0 (hata)
  • "42" (dizgi)
  • 42 (tamsayı) Doğru cevap
  • 42.0 (ondalık)

Açıklama: atoi bir dizgiyi tamsayıya çevirir; "42" → 42.

2 stdlib işlevleri

Kavram Anlamı
malloc bellek ayır
exit programdan çık
atoi dizgiyi sayı yap
qsort diziyi sırala

3 qsort çağrısı

Soru
qsort(arr, 3, sizeof(int), ____);
Cevap
qsort(arr, 3, sizeof(int), cmp);

Açıklama: qsort'un son parametresi karşılaştırma işlevidir.

Orta seviye bölümündeki tüm dersler