Tecnología

Inicio

Cómo reducir la longitud de una cadena en C

Cuando se trabaja con cadenas en C, puede ser útil para aumentar dinámicamente o reducir el tamaño de una cadena para gestionar su memoria de manera eficiente. cadenas normales definidas por la palabra clave "char *" tienen tamaños estáticos que no pueden cambiar, por lo que necesita para trabajar directamente con los bloques de memoria en su lugar. Utilice la función "malloc" para crear un bloque de memoria que almacena la cadena y luego la función "realloc" para cambiar el tamaño del bloque de memoria.

Instrucciones

1 Abra el archivo de código fuente de C en un editor como Microsoft Visual Studio Express.

2 Agregue el código siguiente al principio del archivo fuente C para que pueda acceder a las funciones de la memoria:

incluir <stdio.h> incluir <stdlib.h>

3 Declarar las variables que va a utilizar añadiendo el siguiente código en la parte superior de su función:

Char

buf, cur_ptr, * temp_ptr;

c carbón;

size_t mem_size = 200;

size_t mem_used = 0;

4 Llame a la función "malloc" para asignar un bloque de memoria que se puede utilizar para almacenar la cadena, añadiendo el código:

buf =

(char) malloc ((mem_size) sizeof (char));

si el retorno -1 (buf == NULL);

5 Recibir datos del usuario, un carácter a la vez, hasta que una nueva línea ( '\ n') se introducen carácter o 200 caracteres, añadiendo el código:

cur_ptr = buf;

while ((c = getchar ())! = '\ n') {

* Cur_ptr ++ = c;

mem_used ++;

si (== mem_used mem_size) romper;

}

6 Llame a la función "realloc" para reasignar el bloque de memoria, reduciendo su tamaño por 2, con el siguiente código:

si (mem_used> 2) {

mem_size - = 2;

temp_ptr = realloc (buf, mem_size);

si (temp_ptr == NULL) return -1;

buf = temp_ptr;

cur_ptr = buf + mem_used;

}

El puntero "buf" apunta al comienzo del bloque de memoria "cadena" y "puntos cur_ptr" a la posición actual, que es el fin de la "cadena".

7 Llame a la función "libre" para liberar el bloque de memoria para la cadena, de lo contrario el programa tendrá una pérdida de memoria, añadiendo el código:

libre (buf);

8 Guarde el archivo de C, compilar y ejecutar el programa para ejecutar el nuevo código de cadena.