Código C:
Ver original
/* Programa de ejemplo de gestió de memoria dinámica. El programa tomará los registros de un fichero y reservará la memoria necesaria para poder guardarlos en memoria y ordenarlos con el qsort(), una vez ordenados los volverá a guardar en el fichero */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* macro para leer cadenas con caracteres blanco filtrando los return y blancos iniciales */ #define lee_cad(cad,n,fin) cad[0]=getchar(); \ while(((int)cad[0] == 10) || ((int)cad[0] == 32)) \ cad[0]=getchar();\ n=0; \ while(((int)cad[n]!= 10) && (n < fin)){ \ n++; cad[n]=getchar();} \ cad[n]='\0'; struct registro{ char nombre[50]; float deuda; }; int main(){ FILE * df; struct registro cliente; int i,fin; int num_registros; struct registro *punt_memoria; int compara(); } do{ lee_cad(cliente.nombre,i,50); //scanf("%49s",cliente.nombre); } while(fin!=0); } /* Para ver cuantos registros hay en el fichero, pongo el puntero al final, obtengo su posición y divido por el tamaño del registro */ /* Reservo la memoria necesaria para estos registros */ /* Leo los registro del fichero y los guardo en memoria */ /* Leo todos los registros y los guardo en la zona reservada de memoria */ /* Ordeno el vector con qsort() */ /* Guarda los registros ordenados en el fichero */ } /* Mostrar el contenido del fichero ordenado */ } for(i=0; i < num_registros; i++) } /* main() */ /* La función compara usa strcmp para ordenar alfabéticamente el fichero */ int compara(struct registro *r1, struct registro *r2){ }