Saltar al contenido

¿Cómo truncar C char *?

Solución:

Si no necesita copiar la cadena en otro lugar y puede cambiarla

/* make sure strlen(name) >= 3 */
namelen = strlen(name); /* possibly you've saved the length previously */
name[namelen - 3] = 0;

Si necesita copiarlo (porque es un literal de cadena o desea mantener el original)

/* make sure strlen(name) >= 3 */
namelen = strlen(name); /* possibly you've saved the length previously */
strncpy(copy, name, namelen - 3);
/* add a final null terminator */
copy[namelen - 3] = 0;

Creo que parte de tu publicación se perdió en la traducción.

Para truncar una cadena en C, simplemente puede insertar un carácter nulo de terminación en la posición deseada. Todas las funciones estándar tratarán la cadena como si tuviera la nueva longitud.

#include <stdio.h>
#include <string.h>

int main(void)
{
    char string[] = "one one two three five eight thirteen twenty-one";

    printf("%sn", string);

    string[strlen(string) - 3]  = '';

    printf("%sn", string);

    return 0;
}

Si conoce la longitud de la cadena, puede usar aritmética de puntero para obtener una cadena con los últimos tres caracteres:

const char* mystring = "abc123";
const int len = 6;

const char* substring = mystring + len - 3;

Tenga en cuenta que substring apunta a la misma memoria que mystring y solo es válido mientras mystring es válido y no se modifica. La razón por la que esto funciona es que la cadena de ca no tiene marcadores especiales al principio, solo el NULL terminación al final.

Interpreté su pregunta como querer los últimos tres caracteres, deshacerse del comienzo, a diferencia de cómo la leyó David Heffernan, uno de nosotros obviamente está equivocado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *