“Conocimiento Programación>C /C + + Programming

Cómo reducir la longitud de una cadena en C

2012/9/23
Cuando se trabaja con cadenas en C , puede ser útil para aumentar o reducir dinámicamente el tamaño de una cadena de gestionar la 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 función " realloc " para cambiar el tamaño del bloque de memoria de cadena en cuando. Instrucciones
1

Abra el archivo de origen C en un editor como Microsoft Visual Studio Express.
2

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

# include

# include
3

Declare 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 ;

char c ;

mem_size size_t = 200 ;

size_t mem_used = 0 ;
4

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

buf = (char *) malloc ( ( mem_size ) * sizeof (char ));

if ( buf == NULL ) return -1 ;
5

Recibir la entrada del usuario , un carácter a la vez, hasta que haya introducido un carácter de nueva línea ('\\ n ') o 200 caracteres , con el código :

cur_ptr = buf ;

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

* cur_ptr + + = c ; !

mem_used + + ;

if ( mem_used == mem_size ) break;

}
6

llamar a la función " realloc " para reasignar el bloque de memoria , lo que reduce su tamaño por 2, con el siguiente código :

if ( mem_used > 2 ) {

mem_size - = 2 ;

temp_ptr = realloc ( buf, mem_size ) ;

if ( temp_ptr == NULL ) return -1 ;
< p > buf = temp_ptr ;

cur_ptr = buf + mem_used ;

}

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

llamar 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 , con el código : .

libre (buf ) ;
8

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


C /C + + Programming
¿Qué son los algoritmos de programación no preventiva?
En el esquema de carga absoluta, ¿qué función del cargador realiza el programador?
Cómo ordenar en una cuadrícula de datos
Cómo convertir una cadena en caracteres en C + +
Cómo agregar un cuadro de texto de DataGridView
Cómo calcular integrales con C + +
Cómo conectar Visual C a una base de datos Access
Cómo reemplazar texto arbitrario de cadenas en C + +
Conocimiento de la computadora © http://www.ordenador.online