typestar

Interfaces acotadas en C

Recibir el búfer y su capacidad juntos, y reportar cuánto se necesitaba.

size_t format_label(char *out, size_t cap, const char *lang, int stars) {
    static const char *filled = "***";
    size_t needed = strlen(lang) + 1 + (size_t) stars;

    if (out != NULL && cap > needed) {
        size_t n = strlen(lang);
        memcpy(out, lang, n);
        out[n] = ' ';
        memcpy(out + n + 1, filled, (size_t) stars);
        out[needed] = '\0';
    }
    return needed;
}

Cómo funciona

  1. Pasar un búfer sin su tamaño es como ocurren los desbordamientos.
  2. Devolver la longitud requerida deja a quien llama reintentar más grande.
  3. Esta es la forma de snprintf, y es una buena forma.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
340
Tokens
112
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 67 segundos.

Escribe este fragmento

Paso 3 de 4 en Firmas; paso 3 de 11 en APIs, errores y pruebas.

← Anterior Siguiente →