Saltar al contenido

cuando uso la función strlcpy en c, el compilador me da un error

Hola usuario de nuestro sitio, hallamos la solución a tu búsqueda, continúa leyendo y la encontrarás un poco más abajo.

Solución:

referencia indefinida a `strlcpy’

Esto sucede cuando el enlazador (collect2 si está utilizando gcc) no puede encontrar la definición de la función de la que se queja (no el declaración o prototipo, pero el definición, donde se define el código de la función).

En su caso, puede suceder porque no hay un objeto compartido o una biblioteca con strlcpyEl código de vincular contra. Si está seguro de que hay una biblioteca con el código y desea establecer un vínculo con ella, considere especificar la ruta a la biblioteca con el -L parámetro pasado al compilador.

Agregue este código a su código:

#ifndef HAVE_STRLCAT
/*
 * '_cups_strlcat()' - Safely concatenate two strings.
 */

size_t                  /* O - Length of string */
strlcat(char       *dst,        /* O - Destination string */
              const char *src,      /* I - Source string */
          size_t     size)      /* I - Size of destination string buffer */

  size_t    srclen;         /* Length of source string */
  size_t    dstlen;         /* Length of destination string */


 /*
  * Figure out how much room is left...
  */

  dstlen = strlen(dst);
  size   -= dstlen + 1;

  if (!size)
    return (dstlen);        /* No room, return immediately... */

 /*
  * Figure out how much room is needed...
  */

  srclen = strlen(src);

 /*
  * Copy the appropriate amount...
  */

  if (srclen > size)
    srclen = size;

  memcpy(dst + dstlen, src, srclen);
  dst[dstlen + srclen] = '';

  return (dstlen + srclen);

#endif /* !HAVE_STRLCAT */

#ifndef HAVE_STRLCPY
/*
 * '_cups_strlcpy()' - Safely copy two strings.
 */

size_t                  /* O - Length of string */
strlcpy(char       *dst,        /* O - Destination string */
              const char *src,      /* I - Source string */
          size_t      size)     /* I - Size of destination string buffer */

  size_t    srclen;         /* Length of source string */


 /*
  * Figure out how much room is needed...
  */

  size --;

  srclen = strlen(src);

 /*
  * Copy the appropriate amount...
  */

  if (srclen > size)
    srclen = size;

  memcpy(dst, src, srclen);
  dst[srclen] = '';

  return (srclen);

#endif /* !HAVE_STRLCPY */

entonces, puedes usarlo. disfrútala.

strlcpy() no es una función estándar de C.

Es posible que desee utilizar strncpy() o probablemente también memcpy() en lugar de.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *