typestar

Copiar cadenas en C

strcpy confía en ti por completo; strncpy no siempre termina. Conoce ambas trampas.

#include <string.h>

void copy_bounded(char *dst, size_t cap, const char *src) {
    if (cap == 0) {
        return;
    }
    strncpy(dst, src, cap - 1);
    dst[cap - 1] = '\0';
}

size_t copy_reporting(char *dst, size_t cap, const char *src) {
    size_t needed = strlen(src);
    if (cap > 0) {
        size_t fits = (needed < cap - 1) ? needed : cap - 1;
        memcpy(dst, src, fits);
        dst[fits] = '\0';
    }
    return needed;
}

Cómo funciona

  1. strcpy escribe hasta el NUL de la fuente, mida lo que mida el destino.
  2. strncpy se detiene en n bytes y puede no dejar terminador.
  3. Escribir el terminador tú mismo es el hábito que te salva.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
380
Tokens
124
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 78 segundos.

Escribe este fragmento

Paso 1 de 4 en Copiar y construir; paso 1 de 13 en Cadenas y texto.

Siguiente →