C strcpy () - malvado

lgunas personas parecen pensar que C'sstrcpy()a función @ es mala o mala. Si bien admito que generalmente es mejor usarstrncpy() para evitar desbordamientos del búfer, lo siguiente (una implementación destrdup()unción @ para aquellos que no tienen la suerte de tenerla) usa @ de forma segustrcpy() y deberíaNunc desbordamiento:

char *strdup(const char *s1)
{
  char *s2 = malloc(strlen(s1)+1);
  if(s2 == NULL)
  {
    return NULL;
  }
  strcpy(s2, s1);
  return s2;
}

*s2 tiene garantizado tener suficiente espacio para almacenar*s1, y usandostrcpy() nos ahorra tener que almacenar elstrlen() resulta en otra función para usar más tarde como el parámetro de longitud innecesario (en este caso) parastrncpy(). Sin embargo, algunas personas escriben esta función constrncpy(), o inclusomemcpy(), que requieren un parámetro de longitud. Me gustaría saber qué piensa la gente sobre esto. Si usted piensastrcpy() es seguro en ciertas situaciones, dilo. Si tiene una buena razón para no usarstrcpy() en esta situación, por favor dénoslo. Me gustaría saber por qué sería mejor usarstrncpy() omemcpy() en situaciones como esta. Si usted piensastrcpy() está bien, pero no aquí, por favor explique.

ásicamente, solo quiero saber por qué algunas personas usanmemcpy() cuando otros usanstrcpy() y aún otros usan lisostrncpy(). ¿Hay alguna lógica para preferir uno sobre los tres (sin tener en cuenta las comprobaciones de los dos primeros)?

Respuestas a la pregunta(17)

Su respuesta a la pregunta