Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <string.h> > strerror

strerror() fonksiyonu

Bildirim

char* strerror(int errnum);

errno_t strerror_s(char *buf, rsize_t bufsz, errno_t errnum); (C11)

size_t strerrorlen_s(errno_t errnum); (C11)

Açıklama

Sistem hata kodunun verildiği errnum parametresinin metin ifadesini geri döndürür.

strerror_s() fonksiyonunda ayrıca;

  • Hata mesajı buf parametresine kopyalanır.
  • Bufsz-1 boyutundan fazla byte yazılmaz, arabellek her zaman boş bir karakterle sonlandırılır.
  • Mesajı arabelleğe sığması için kesilmesi gerekiyorsa ve bufsz parametre değeri 3'ten büyükse, sadece bufsz-4 kadar byte yazılır ve "..." karakterleri boş karakter ('\0') sonlandırıcıdan önce eklenir.

Ayrıca, aşağıdaki koşullardan biri gerçekleştiğinde yüklenmiş olan kısıtlayıcı işlem fonksiyonu çağrılır:

  • Eğer buf parametresi NULL bir işaretçi ise,
  • Bufsz parametre değeri 0 ise veya RSIZE_MAX değerinden büyük ise.

Eğer buf parametresinin boyutu hata mesajından küçük ise, sonuç belirsiz olur.

strerrorlen_s() fonksiyonu ise, strerror_s() fonksiyonunun errnum değeri ile çağrıldığında yazacağı, yerel ayarlara özgü kesilmemiş hata mesajının uzunluğunu hesaplar. Uzunluk değeri boş sonlandırıcı karakteri içermez.

Parametreler

errnum: Hata kodunu gösteren değerdir.

buf: Kullanıcı tarafından tanımlanan ara belleği gösteren bir işaretçidir.

errnumsz: Buf parametresinin boyutudur.

Dönüş değeri

Strerror() fonksiyonu errnum parametre değerine karşılık gelen boş karakteri ile sonlandırılmış hata mesajını gösteren bir işaretçi geri döndürür.

Strerror_s() fonksiyonu eğer tüm mesaj başarıyla buf parametresine yüklenirse 0 değerini, hata durumunda sıfır olmayan değer geri döndürür.

strerrorlen_s() fonksiyonu strerror_s() fonksiyonunun döndüreceği mesajın uznluğunu geri döndürür.

Örnek


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>

int main(void)
{
    FILE *fp;

    if ((fp = fopen ("dosya.txt", "r")) == NULL) {
         printf("Hata: %s", strerror(errno));
         exit(1);
    }

    fclose(fp);

    return 0;
}


Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar.

Hata: No such file or directory

Yukarıdaki program, dosya.txt dosyasını fopen() fonksiyonu ile okuma modunda açmaya çalışır. Eğer dosya mevcut değilse, strerror() fonksiyonu devreye girer ve böyle bir dosya olmadığını gösteren hata mesajını ekrana yazar.