Problema con Arrays dinámicos

Daniel Vara
18 de Septiembre del 2010
Hola a [email protected] Tengo un "pequeño" problema con un programa y quería saber si por aqui podrían hecharme una mano. De antemano gracias.

En su momento cree un programa que inicializaba un array y aceptaba 2 integers para despues realizar diferentes operaciones con ellos. Era algo así:

int main(int argc, char **argv){
struct numbers{
int number1;
int number2;
};
struct numbers matrix[3];
int i = 0;
for(i; i < 3;i++){
printf("%c", 'n');
printf("%s", "Please type first integer ");
printf("%i", i + 1);
printf("%s", ": n");
scanf("%i", &matrix[i].number1);
printf("%c", 'n');
printf("%s", "Please type second integer ");
printf("%i", i + 1);
printf("%s", ": n");
scanf("%i", &matrix[i].number2);
}
i = 0;

El problema es que ahora tengo que hacer el array dinámico y se hacerlo con un integer, pero no con 2. Es decir, ¿alguien me puede explicar que tendría que cambiar aqui para que pueda introducir 2 integers como en la anterior estructura?:

int* array;
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
array = (int*) malloc(n*sizeof(int));
for (i=0; i<n; i++) {
printf("Enter number %d: ", i);
scanf("%d", &array[i]);
}

Capitan Kirk
20 de Septiembre del 2010
Si lo que quieres es un array dinámico de estructuras, sólo tendrías que cambiar la llamada a malloc. Prueba con esto:


typedef struct
{
int number1;
int number2;
}
numbers;

int main(int argc, char **argv)
{
numbers *array;
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
array = (numbers *)malloc(n*sizeof(numbers));
/*
Aquí pones el código que trata tu array de numbers
*/
free(array);
}

Acuérdate siempre de liberar la memoria que reserves cuando ya no la necesites mediante una llamada a free.

Saludos,

Daniel Vara
20 de Septiembre del 2010
Muchas gracias por la respuesta. Es justo lo que necesitaba. Un saludo!!