memoria dinamica y mayusculas

Joselillo
06 de Febrero del 2004
hola!queria saber si alguien me podia dar una solucion a una cosilla que no tengo ni idea como se hace, mi problema es que tengo un array limitado de enteros, conforme voy ocupando las posiciones del array puede ser que el programa necesite seguir poniendo elementos en el array y no halla mas sitio, ¿en ese caso habra que asignarle memoria dinamica al array no?bien he aqui mi problema se que se una la funcion void *malloc(site_t size)¿pero como se usa?me parece que te devuelve un puntero a la zona de memoria que se te da, si es asi, ¿como hago para ampliar el array y poder insertar nuevos elementos?. Mi otra duda venia sobre si hay alguna funcion que compare cadenas alfabeticamente y no tenga en cuenta las mayusculas y minusculas, es decir que Juan y juan sean la misma cadena. Gracias por la atencion. Un saludo.

josuth
06 de Febrero del 2004
Hola tocallo!

puedes declarar tu array dinamico de la siguiente manera:

int *arrayDin=(int *)malloc(sizeof(int)*10);

que declara un array de 10 enteros.

Para aumentar el tamaño existe otra funcion: realloc.

arrayDin=(int *)realloc(arrayDin,20);

ahora hemos aumentado en 10 la capacidad, realmente lo que hace realloc es crear un espacio nuevo mas grande y copiar el contenido.

No olvides liberar la memoria creada con estas funciones!!, para ello usa free():

free(arrayDin);

Un saludo

josuth
06 de Febrero del 2004
Se me olvidaba comentarte, tu segunda duda acerca de las cadenas.

Me parece que existe una funcion que compara cadenas sin diferenciar mayusculas de minusculas, se llama stricmp(), y funciona exactamente igual que strcmp().

Joselillo
06 de Febrero del 2004
Hola Josuth!muchas gracias de nuevo por contestar a mi cuestion entre lo del otro dia y esto, estoy a punto de acabar la practica y si no fuera por ti no se yo que seria de esto, tenia una ligera idea de la primera de mis cuestiones pero de lo que yo pensaba a lo que me estas poniendo tu va mucho, supongo que para recorrer el array solo tendre que incrementar el puntero, acceder al indice y colocar mi elemento, sobre lo que dices de free() no lo entiendo muy bien, ni siquiera en el manual que estoy leyendo, ¿para que vas a liberar la memoria que ya tienes ocupada no?(en mi caso el array)creo que sera eliminar la memoria asignada al terminar el progrma ¿no? supongo que nuevamente tendre un fallo de concepto muy gordo y me este confundiendo pero esque realmente no le encuentro sentido. Sobre esa funcion que dices que no distingue mayusculas y minusculas no la encuentro en mi manual asique haber si me podrias decir donde puedo encontrar su prototipo y la interpretacion sobre su valor devuelto. Nuevamente muchisimas gracias y un cordial saludo genio.