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
strcpyescribe hasta el NUL de la fuente, mida lo que mida el destino.strncpyse detiene en n bytes y puede no dejar terminador.- Escribir el terminador tú mismo es el hábito que te salva.
Palabras clave y builtins usados aquí
charconstifreturnsize_tvoid
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.
Paso 1 de 4 en Copiar y construir; paso 1 de 13 en Cadenas y texto.