SORU
31 EKİM 2008, Cuma


() strdup - C ne yapıyor?

C strdup() işlevi, amacı nedir?

CEVAP
31 EKİM 2008, Cuma


Gibi (C ve UNIX kelime atar kısaltılmış şekilde kullanılan olduğunuzu varsayarak) geliyor tam olarak, dizeleri çoğaltır.

Aklımda aslında bir ISO C standardı kendisi bir parçası değil (POSIX bir şey), etkili bir şekilde aşağıdaki kodu aynı yapıyor tutmak:

char *strdup (const char *s) {
    char *d = malloc (strlen (s)   1);   // Space for length plus nul
    if (d == NULL) return NULL;          // No memory
    strcpy (d,s);                        // Copy the characters
    return d;                            // Return the new string
}

Diğer bir deyişle:

  1. Eski dize (artı dize sonu boş karakter) saklamak için yeterli bellek ayırmaya çalışır.
  2. Eğer ayırma başarısız oldu, ayarlar errno ENOMEM verir NULL hemen (ayarı errno ENOMEM bir şey malloc mu yani, hiç gerek yok açıkça bunu bizim strdup).
  3. Aksi takdirde tahsisat yeni bir dize için eski dize anlaşıldı ve yeni adres arayan bir noktada boşaltmak için sorumlu olan) geri çok çalıştı.

Unutmayın bu kavramsal tanımı. Maaş değerinde herhangi bir kütüphane yazar ağır optimize edilmiş kod özel işlemci kullanılan hedefleme sağlamış olabilir.

Eğer sen bölümü kalabalık sevmez birden fazla çıkış noktaları fonksiyonları (bilmiyorum tabii etkiler okunabilirlik, ben inanmam olması durumunda çok kısa bir işlev), kodu yazın:

char *strdup (const char *s) {
    char *d = malloc (strlen (s)   1);   // Allocate memory
    if (d != NULL) strcpy (d,s);         // Copy string if okay
    return d;                            // Return new memory
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Richard Laxa

    Richard Laxa

    30 AĞUSTOS 2012
  • Soulkiller13 ツ

    Soulkiller13

    30 Mayıs 2013