Autor
|
Tema: Ayuda - Ajustar tamaño array - variable (Leído 3,282 veces)
|
Miky Gonzalez
Desconectado
Mensajes: 87
http://mikygonzalez.comule.com/blog/
|
Buenas, tengo el siguiente codigo: char caracteres[39] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}, prueba[] = "HOLA MUNDO";
Como puedo hacer por ejemplo que al hacer:
Se ajuste el tamaño de caracteres a 11 (caracteres[11]) para ahorrar la memoria de esas posiciones que ya no usare. Al hacer el strcpy me queda: char caracteres[39] = {'H', 'O', 'L', 'A', ' ', 'M', 'U', 'N', 'D', 'O', '\n', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}
Como puedo eliminar lo anterior y ajustar el valor de caracteres[39] a caracteres[11] (se incluye el final de cadena).
|
|
« Última modificación: 4 Julio 2012, 11:48 am por Miky Gonzalez »
|
En línea
|
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica: EN CONSTRUCCIÓN
|
|
|
DickGumshoe
|
A no ser que uses memoria dinámica, no va a poder ser...
Tendrías que declarar la variable "caracteres" como un puntero a char, reservarle memoria, y asignarle los valores que quieras, por ejemplo, las letras del abecedario, como en tu ejemplo.
Después, hallas la longitud de "prueba" con strlen(), y dejas a "caracteres" con esa longitud (usando la función realloc() ).
Finalmente, copias el contenido con strcpy.
Saludos.
|
|
|
En línea
|
|
|
|
Miky Gonzalez
Desconectado
Mensajes: 87
http://mikygonzalez.comule.com/blog/
|
A no ser que uses memoria dinámica, no va a poder ser...
Tendrías que declarar la variable "caracteres" como un puntero a char, reservarle memoria, y asignarle los valores que quieras, por ejemplo, las letras del abecedario, como en tu ejemplo.
Después, hallas la longitud de "prueba" con strlen(), y dejas a "caracteres" con esa longitud (usando la función realloc() ).
Finalmente, copias el contenido con strcpy.
Saludos.
Pero entonces, si yo por ejemplo: char caracteres[] = {'a' ..'z'}; le estoy dando el valor de 26. cuando copie con strcpy, me va a quedar tambien con 26 reservado aunque solo use por ejemplo 5, como haria para convertir ese 26 reservado en solo 5 por ejemplo? Si es posible algun ejemplo se agradeceria.
|
|
|
En línea
|
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica: EN CONSTRUCCIÓN
|
|
|
DickGumshoe
|
Te pongo un ejemplo para que lo entiendas mejor: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *cadena; //Puntero a char char prueba[] = "Hola Mundo"; //Contenido que queremos poner en "cadena" int i, longitud; char letra = 'a'; //para asignarle valores a "cadena" cadena = (char*) malloc (27 * sizeof(char)); //Tenemos 27 espacios para la cadena. for(i=0; i<26; i++) { cadena[i] = letra; letra++; //Pasamos a la siguiente letra del abecedario (valor en ASCII). } cadena[26] = '\0'; //Ya tenemos asignados todos los valores de "cadena". Ahora, vamos a concatenar. longitud = strlen(prueba ); //Hallamos la longitud para después quitar memoria cadena = (char*) realloc (cadena , (longitud + 1) * sizeof(char)); //Sabemos que "prueba" tiene una longitud menor que "cadena". Por tanto, con realloc() se le quita memoria a "cadena", //ya que no vamos a necesitar tanta. Se le reserva "longitud + 1" porque strlen() coge la longitud de la cadena sin // el '\0' final. strcpy(cadena , prueba ); //Concatenamos puts(cadena ); //¡Ya tenemos "Hola Mundo en cadena! return 0; }
Si tienes alguna duda sobre cómo utilizar realloc() u otra función, pregunta. Saludos.
|
|
« Última modificación: 4 Julio 2012, 13:21 pm por DickGumshoe »
|
En línea
|
|
|
|
Miky Gonzalez
Desconectado
Mensajes: 87
http://mikygonzalez.comule.com/blog/
|
Vale ya entendi, muchas gracias DisckGumshoe por la ayuda.
|
|
|
En línea
|
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica: EN CONSTRUCCIÓN
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Tamaño de array através de variable
Programación C/C++
|
eleon
|
3
|
3,421
|
20 Julio 2012, 01:48 am
por rir3760
|
|
|
Como saber el tamaño de un array de tipo int
Programación C/C++
|
Blaster
|
4
|
50,224
|
8 Noviembre 2012, 19:31 pm
por Blaster
|
|
|
AYUDA URGENTE TAMANO ARRAY
Foro Libre
|
pindonga123
|
1
|
2,287
|
4 Noviembre 2013, 03:39 am
por @synthesize
|
|
|
[AYUDA] usar un Array con una variable contadora
Programación C/C++
|
Kougami
|
0
|
1,615
|
15 Enero 2017, 12:40 pm
por Kougami
|
|
|
Ayuda con array de punteros de tamaño dinámico !
Programación C/C++
|
statham
|
1
|
1,793
|
20 Marzo 2019, 21:08 pm
por ivancea96
|
|