9 Nisan 2018 Pazartesi

strdup metodu

Giriş
Şöyle yaparız.
char *s = "Global View";
char *d = strdup(s);
free (d);
Visual Studio ile şöyle bir uyarı alırız.
warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup. See online help for details.
Bu uyarından kurtulmanın en kolay yolu şöyle
#define strdup  _strdup;
Metodun İçi
Metodun içi şöyledir.
char *strdup(const char *s) {
  if (s == NULL) return NULL;  // Optional, s should be a string
  size_t siz = strlen(s) + 1;
  char *y = malloc(siz);
  if (y != NULL) {
    memcpy(y, s, siz);
  }
  return y;
}
Diğer Seçenekler
strdup yerine şöyle yaparız. Ancak iki kere string'in uzunluğu bulunduğu için biraz verimsizdir.
char *s = "Global View";
char *d = malloc(strlen(s) +1);
strcpy(d,s);
free(d);

Hiç yorum yok:

Yorum Gönder