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

Cómo reducir la longitud de una cadena en C

2014/6/12
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
Cómo crear un CAB en Windows Mobile
Cómo ordenar alfabéticamente una matriz en C + +
Cómo utilizar el comando Scanf en C + +
Cómo escribir una línea de switches Combinación de teclas
Cómo emitir punteros de función
Cómo compilar C en Ubuntu
Cómo utilizar punteros de función en una búsqueda argumento binario en C + +
Cómo utilizar números negativos en C
Conocimientos Informáticos © http://www.ordenador.online