Concatenación en C
strcat agrega en el terminador existente; el destino debe tener espacio para ambos.
#include <string.h>
void join_three(char *out, size_t cap, const char *a, const char *b,
const char *c) {
if (cap == 0) {
return;
}
out[0] = '\0';
size_t used = 0;
const char *parts[3] = {a, b, c};
for (int i = 0; i < 3; i++) {
size_t n = strlen(parts[i]);
if (used + n + 1 > cap) {
break;
}
memcpy(out + used, parts[i], n + 1);
used += n;
}
}
Cómo funciona
- El destino necesita espacio para su longitud, más la fuente, más uno.
- Repetir
strcatreescanea desde el inicio cada vez, lo que es cuadrático. - Rastrear el final tú mismo lo devuelve a trabajo lineal.
Palabras clave y builtins usados aquí
breakcharconstforifintreturnsize_tvoid
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 345
- Tokens
- 134
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 85 segundos.
Paso 3 de 4 en Copiar y construir; paso 3 de 13 en Cadenas y texto.