matriz Dados los índices de inicio y finalización, ¿cómo puedo copiar parte de una cadena en C?




matriz de cadenas en c (3)

Sólo tiene que utilizar memcpy .

Si el destino no es lo suficientemente grande, strncpy no terminará en nulo. Si el destino es enorme en comparación con el origen, strncpy simplemente rellena el destino con nulos después de la cadena. strncpy tiene sentido y no es adecuado para copiar cadenas.

strncpy es como memcpy excepto que llena el destino con nulos una vez que ve uno en la fuente. Es absolutamente inútil para las operaciones de cadena. Es para arreglarlo con 0 registros rellenados.

En C, ¿cómo puedo copiar una cadena con índices de inicio y finalización, de modo que la cadena solo se copiará parcialmente (desde el índice de inicio hasta el índice de finalización)?

Esto sería como strcpy 'copia de cadena C', pero con un comienzo y un índice final.


Answer #1

Usar strncpy

p.ej

strncpy(dest, src + beginIndex, endIndex - beginIndex);

Esto asume que has

  1. Validado que dest es suficientemente grande.
  2. endIndex es mayor que beginIndex
  3. beginIndex es menor que strlen(src)
  4. endIndex es menor que strlen(src)

Answer #2

¿Has comprobado strncpy ?

char * strncpy (char * destination, const char * source, size_t num);

Debe darse cuenta de que el principio y el final realmente definen un número de bytes que se copiarán de un lugar a otro.







substring