Ejemplo de programa para la gestión de libros en una biblioteca personal realizado en lenguaje C
Se utilizan bucles (for, while, switch), estructuras de decisión (if, if else), acceso a ficheros de texto y binarios, ordenación de ficheros por el método de selección directa.
Enlace CodePad
http://codepad.org/vTyuZDQ1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Código Fuente
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include <stdio.h> #include <stdlib.h> void crear_ficheros (void); void introducir_libro_nuevo (void); void listar_todo (void); void prestar_libro (void); void devolver_libro (void); void marcar_libro_como_borrado (void); void marcar_libro_como_no_borrado (void); void listar_no_borrados (void); void listar_no_borrados_a_fichero (void); void listar_no_borrados_si_prestados (void); void listar_no_borrados_si_prestados_fichero (void); void listar_amigos_pantalla (void); void listar_amigos_fichero (void); void copiar_fichero_dos (void); void copiar_fichero_fread_fwrite (void); void listar_ordenado_titulo (void); void ordenar_fichero_seleccion_directa (void); void listar_ordenado_titulo_fichero (void); void compactar_fichero (void); struct Tficha { int signatura; //autonumerica char titulo [50]; char autor [50]; char editorial [20]; int n_paginas; float precio; int prestado; // 0 no prestado - 1 prestado char amigo [20]; char fecha_prestamo [11]; int borrado; // 0 no borrado - 1 borrado char isbn [20]; char genero [20]; char idioma [10]; }; int main() { int opcion_menu = 0, salir = 0; //me aseguro de que los ficheros existen y sino los creo crear_ficheros (); while (salir == 0) //salimos si salir es uno { system ("cls"); printf("Aplicacion estanteria.\n"); printf(" 1 - Introducir nuevos libros.\n"); printf(" 2 - Prestar libros.\n"); printf(" 3 - Devolver libros.\n"); printf(" 4 - Eliminar libros.\n"); printf(" - - - - - - - - - - - - - -\n"); printf(" 5 - Listar libros en pantalla ordenados por signatura (titulo y autor).\n"); printf(" 6 - Listar libros en fichero ordenados por signatura (titulo y autor).\n"); printf(" 7 - Listar libros en pantalla ordenados por titulo (titulo y autor).\n"); printf(" 8 - Listar libros en fichero ordenados por titulo (titulo y autor).\n"); printf(" 9 - Listar libros prestados en pantalla (amigo y fecha préstamo).\n"); printf("10 - Listar libros prestados en fichero (amigo y fecha préstamo).\n"); printf("11 - Listar amigos que tienen algo prestado en pantalla.\n"); printf("12 - Listar amigos que tienen algo prestado en texto.\n"); printf(" 0 - Salir.\n"); printf("\nSeleccione una opcion: "); scanf ("%d",&opcion_menu); fflush(stdin); switch (opcion_menu) { case 0: printf("Has elegido salir."); salir = 1; break; case 1: introducir_libro_nuevo (); break; case 2: prestar_libro (); break; case 3: devolver_libro (); break; case 4: marcar_libro_como_borrado (); break; case 5: listar_no_borrados (); break; case 6: listar_no_borrados_a_fichero (); break; case 7: //copiar_fichero_dos (); copiar_fichero_fread_fwrite (); ordenar_fichero_seleccion_directa (); listar_ordenado_titulo (); break; case 8: copiar_fichero_fread_fwrite (); ordenar_fichero_seleccion_directa (); listar_ordenado_titulo_fichero (); break; case 9: listar_no_borrados_si_prestados (); break; case 10: listar_no_borrados_si_prestados_fichero (); break; case 11: listar_amigos_pantalla (); break; case 12: listar_amigos_fichero (); break; case 98: //desmarcar libros borrados marcar_libro_como_no_borrado (); break; case 99: //listado de todo lo que hay en el fichero libros listar_todo (); break; case 100: compactar_fichero (); break; default: printf("La opcion seleccionada no esta disponible."); break; } } return 0; } void compactar_fichero (void) { struct Tficha libro; FILE * fichero_libros; FILE * fichero_copia_libros; fichero_libros = fopen ("libros.vaf", "rb"); fichero_copia_libros = fopen ("copia_libros_aux.vaf", "wb"); system ("cls"); printf("\n\nCopia listado\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0)) { fwrite (&libro, sizeof(libro), 1, fichero_copia_libros); } } fclose (fichero_libros); fclose (fichero_copia_libros); remove("libros.vaf"); if( rename("copia_libros_aux.vaf", "libros.vaf") == 0 ) printf( "El fichero ha sido renombrado: "); else printf( "\nNo pudo ser renombrado\n" ); getchar (); } void listar_ordenado_titulo_fichero (void) { struct Tficha libro; FILE * fichero_libros; FILE * fichero_libros_ordenado_titulo; fichero_libros = fopen ("copia_libros.vaf", "rb"); fichero_libros_ordenado_titulo = fopen ("listado_por_titulo.txt", "wt"); system ("cls"); printf("\n\nListado ordenado por titulo\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0)) { printf("\nSignatura: %d", libro.signatura); printf("\nTitulo: %s", libro.titulo); printf("\nAutor: %s", libro.autor); printf("\nEditorial: %s", libro.editorial); printf("\nIdioma: %s", libro.idioma); printf("\nGenero: %s", libro.genero); printf("\nNumero de paginas: %d", libro.n_paginas); printf("\nPrecio: %.2f", libro.precio); printf("\nPrestado: %d\n", libro.prestado); fprintf(fichero_libros_ordenado_titulo, "\nSignatura: %d", libro.signatura); fprintf(fichero_libros_ordenado_titulo, "\nTitulo: %s", libro.titulo); fprintf(fichero_libros_ordenado_titulo, "\nAutor: %s", libro.autor); fprintf(fichero_libros_ordenado_titulo, "\nEditorial: %s", libro.editorial); fprintf(fichero_libros_ordenado_titulo, "\nIdioma: %s", libro.idioma); fprintf(fichero_libros_ordenado_titulo, "\nGenero: %s", libro.genero); fprintf(fichero_libros_ordenado_titulo, "\nNumero de paginas: %d", libro.n_paginas); fprintf(fichero_libros_ordenado_titulo, "\nPrecio: %.2f", libro.precio); fprintf(fichero_libros_ordenado_titulo, "\nPrestado: %d\n", libro.prestado); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); fclose (fichero_libros_ordenado_titulo); } void listar_ordenado_titulo (void) { struct Tficha libro; FILE * fichero_libros; fichero_libros = fopen ("copia_libros.vaf", "rb"); system ("cls"); printf("\n\nListado ordenado por titulo\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0)) { printf("\nSignatura: %d", libro.signatura); printf("\nTitulo: %s", libro.titulo); printf("\nAutor: %s", libro.autor); printf("\nEditorial: %s", libro.editorial); printf("\nIdioma: %s", libro.idioma); printf("\nGenero: %s", libro.genero); printf("\nNumero de paginas: %d", libro.n_paginas); printf("\nPrecio: %.2f", libro.precio); printf("\nPrestado: %d\n", libro.prestado); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); } void copiar_fichero_dos (void) { system("copy /y libros.vaf copia_libros.vaf"); } void copiar_fichero_fread_fwrite (void) { struct Tficha libro; FILE * fichero_libros; FILE * fichero_copia_libros; fichero_libros = fopen ("libros.vaf", "rb"); fichero_copia_libros = fopen ("copia_libros.vaf", "wb"); system ("cls"); printf("\n\nCopia listado\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0)) { fwrite (&libro, sizeof(libro), 1, fichero_copia_libros); } } fclose (fichero_libros); fclose (fichero_copia_libros); } void listar_amigos_fichero (void) { struct Tficha libro; FILE * fichero_libros; FILE * fichero_listado_amigos; fichero_libros = fopen ("libros.vaf", "rb"); fichero_listado_amigos = fopen ("listado_amigos.txt", "wt"); system ("cls"); printf("\n\nListado amigos\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0) && (libro.prestado == 1)) { printf("\nSignatura: %d", libro.signatura); printf("\nAmigo: %s", libro.amigo); printf("\nFecha de prestamo: %s", libro.fecha_prestamo); fprintf(fichero_listado_amigos, "\nSignatura: %d", libro.signatura); fprintf(fichero_listado_amigos, "\nAmigo: %s", libro.amigo); fprintf(fichero_listado_amigos, "\nFecha de prestamo: %s", libro.fecha_prestamo); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); fclose (fichero_listado_amigos); } void listar_amigos_pantalla (void) { struct Tficha libro; FILE * fichero_libros; fichero_libros = fopen ("libros.vaf", "rb"); system ("cls"); printf("\n\nListado amigos\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0) && (libro.prestado == 1)) { printf("\nSignatura: %d", libro.signatura); printf("\nAmigo: %s", libro.amigo); printf("\nFecha de prestamo: %s", libro.fecha_prestamo); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); } void listar_no_borrados_a_fichero (void) { struct Tficha libro; FILE * fichero_libros; FILE * fichero_listado_signatura; fichero_libros = fopen ("libros.vaf", "rb"); fichero_listado_signatura = fopen ("listado_signatura.txt", "wt"); system ("cls"); printf("\n\nListado completo\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0)) { printf("\nSignatura: %d", libro.signatura); printf("\nTitulo: %s", libro.titulo); printf("\nAutor: %s", libro.autor); printf("\nEditorial: %s", libro.editorial); printf("\nIdioma: %s", libro.idioma); printf("\nGenero: %s", libro.genero); printf("\nNumero de paginas: %d", libro.n_paginas); printf("\nPrecio: %.2f", libro.precio); printf("\nPrestado: %d\n", libro.prestado); fprintf(fichero_listado_signatura, "\nSignatura: %d", libro.signatura); fprintf(fichero_listado_signatura, "\nTitulo: %s", libro.titulo); fprintf(fichero_listado_signatura, "\nAutor: %s", libro.autor); fprintf(fichero_listado_signatura, "\nEditorial: %s", libro.editorial); fprintf(fichero_listado_signatura, "\nIdioma: %s", libro.idioma); fprintf(fichero_listado_signatura, "\nGenero: %s", libro.genero); fprintf(fichero_listado_signatura, "\nNumero de paginas: %d", libro.n_paginas); fprintf(fichero_listado_signatura, "\nPrecio: %.2f", libro.precio); fprintf(fichero_listado_signatura, "\nPrestado: %d\n", libro.prestado); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); fclose (fichero_listado_signatura); } void listar_no_borrados_si_prestados_fichero (void) { struct Tficha libro; FILE * fichero_libros; FILE * fichero_listado_prestados; fichero_libros = fopen ("libros.vaf", "rb"); fichero_listado_prestados = fopen ("listado_prestados.txt", "wt"); system ("cls"); printf("\n\nListado prestados.\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0) && (libro.prestado == 1)) { printf("\nSignatura: %d", libro.signatura); printf("\nTitulo: %s", libro.titulo); printf("\nAutor: %s", libro.autor); printf("\nEditorial: %s", libro.editorial); printf("\nIdioma: %s", libro.idioma); printf("\nGenero: %s", libro.genero); printf("\nNumero de paginas: %d", libro.n_paginas); printf("\nPrecio: %.2f", libro.precio); printf("\nAmigo: %s", libro.amigo); printf("\nFecha de prestamo: %s", libro.fecha_prestamo); fprintf(fichero_listado_prestados, "\nSignatura: %d", libro.signatura); fprintf(fichero_listado_prestados, "\nTitulo: %s", libro.titulo); fprintf(fichero_listado_prestados, "\nAutor: %s", libro.autor); fprintf(fichero_listado_prestados, "\nEditorial: %s", libro.editorial); fprintf(fichero_listado_prestados, "\nIdioma: %s", libro.idioma); fprintf(fichero_listado_prestados, "\nGenero: %s", libro.genero); fprintf(fichero_listado_prestados, "\nNumero de paginas: %d", libro.n_paginas); fprintf(fichero_listado_prestados, "\nPrecio: %.2f", libro.precio); fprintf(fichero_listado_prestados, "\nAmigo: %s", libro.amigo); fprintf(fichero_listado_prestados, "\nFecha de prestamo: %s", libro.fecha_prestamo); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); fclose (fichero_listado_prestados); } void listar_no_borrados_si_prestados (void) { struct Tficha libro; FILE * fichero_libros; fichero_libros = fopen ("libros.vaf", "rb"); system ("cls"); printf("\n\nListado completo\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0) && (libro.prestado == 1)) { printf("\nSignatura: %d", libro.signatura); printf("\nTitulo: %s", libro.titulo); printf("\nAutor: %s", libro.autor); printf("\nEditorial: %s", libro.editorial); printf("\nIdioma: %s", libro.idioma); printf("\nGenero: %s", libro.genero); printf("\nNumero de paginas: %d", libro.n_paginas); printf("\nPrecio: %.2f", libro.precio); printf("\nAmigo: %s", libro.amigo); printf("\nFecha de prestamo: %s", libro.fecha_prestamo); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); } void listar_no_borrados (void) { struct Tficha libro; FILE * fichero_libros; fichero_libros = fopen ("libros.vaf", "rb"); system ("cls"); printf("\n\nListado completo\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((feof (fichero_libros)== 0) && (libro.borrado == 0)) { printf("\nSignatura: %d", libro.signatura); printf("\nTitulo: %s", libro.titulo); printf("\nAutor: %s", libro.autor); printf("\nEditorial: %s", libro.editorial); printf("\nIdioma: %s", libro.idioma); printf("\nGenero: %s", libro.genero); printf("\nNumero de paginas: %d", libro.n_paginas); printf("\nPrecio: %.2f", libro.precio); printf("\nPrestado: %d\n", libro.prestado); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); } void marcar_libro_como_no_borrado (void) { struct Tficha libro; int signatura_a_recuperar, recuperado = 0; FILE * fichero_libros; fichero_libros = fopen ("libros.vaf", "rb+"); system ("cls"); printf("\nBorrado de libros\n\n"); printf("\nIndica la signatura del libro a recuperar: "); scanf("%d", &signatura_a_recuperar); fflush(stdin); libro.borrado = 0; while ((feof (fichero_libros)== 0) && (recuperado == 0)) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((libro.signatura == signatura_a_recuperar)&& (libro.borrado == 1)) { libro.borrado = 0; //retrocedemos el cursor en el fichero para posicionarnos de nuevo //al principio de los datos del libro fseek (fichero_libros, -1 * sizeof (libro), SEEK_CUR); //reescribimos la estructura modificada fwrite (&libro, sizeof(libro), 1, fichero_libros); printf("Libro %d recuperado con exito", libro.signatura); recuperado = 1; } } if (recuperado == 0) { printf("El libro de signatura %d no ha sido localizado.", signatura_a_recuperar); } getchar(); fclose(fichero_libros); } void marcar_libro_como_borrado (void) { struct Tficha libro; int signatura_a_borrar, borrado = 0; FILE * fichero_libros; fichero_libros = fopen ("libros.vaf", "rb+"); system ("cls"); printf("\nBorrado de libros\n\n"); printf("\nIndica la signatura del libro a borrar: "); scanf("%d", &signatura_a_borrar); fflush(stdin); libro.borrado = 0; while ((feof (fichero_libros)== 0) && (borrado == 0) ) { fread (&libro, sizeof(libro), 1, fichero_libros); if ((libro.signatura == signatura_a_borrar)&& (libro.borrado == 0)) { libro.borrado = 1; //retrocedemos el cursor en el fichero para posicionarnos de nuevo //al principio de los datos del libro fseek (fichero_libros, -1 * sizeof (libro), SEEK_CUR); //reescribimos la estructura modificada fwrite (&libro, sizeof(libro), 1, fichero_libros); printf("Libro %d borrado con exito", libro.signatura); borrado = 1; } } if (borrado == 0) { printf("El libro de signatura %d no ha sido localizado.", signatura_a_borrar); } getchar(); fclose(fichero_libros); } void devolver_libro (void) { struct Tficha libro; int signatura_a_devolver, devuelto = 0; FILE * fichero_libros; fichero_libros = fopen ("libros.vaf", "rb+"); system ("cls"); printf("\nDevolucion de libros\n\n"); printf("\nIndica la signatura del libro a devolver: "); scanf("%d", &signatura_a_devolver); fflush(stdin); while ((feof (fichero_libros)== 0) && (devuelto == 0) && (libro.prestado == 1)) { fread (&libro, sizeof(libro), 1, fichero_libros); if (libro.signatura == signatura_a_devolver) { libro.prestado = 0; //retrocedemos el cursor en el fichero para posicionarnos de nuevo //al principio de los datos del libro fseek (fichero_libros, -1 * sizeof (libro), SEEK_CUR); //reescribimos la estructura modificada fwrite (&libro, sizeof(libro), 1, fichero_libros); printf("Libro %d devuelto con exito.", libro.signatura); devuelto = 1; } } if (devuelto == 0) { printf("El libro de signatura %d no ha sido localizado, o no esta prestado.", signatura_a_devolver); } getchar(); fclose(fichero_libros); } void prestar_libro (void) { struct Tficha libro; int signatura_a_prestar, prestado = 0; FILE * fichero_libros; fichero_libros = fopen ("libros.vaf", "rb+"); system ("cls"); printf("\nPrestamo de libros\n\n"); printf("\nIndica la signatura del libro a prestar: "); scanf("%d", &signatura_a_prestar); fflush(stdin); while ((feof (fichero_libros)== 0) && (prestado == 0)) { fread (&libro, sizeof(libro), 1, fichero_libros); if (libro.signatura == signatura_a_prestar) { libro.prestado = 1; printf("\nAmigo: "); gets (libro.amigo); printf("Fecha prestamo: "); gets (libro.fecha_prestamo); //retrocedemos el cursor en el fichero para posicionarnos de nuevo //al principio de los datos del libro fseek (fichero_libros, -1 * sizeof (libro), SEEK_CUR); //reescribimos la estructura modificada fwrite (&libro, sizeof(libro), 1, fichero_libros); printf("Libro %d prestado con exito a %s", libro.signatura, libro.amigo); prestado = 1; } } if (prestado == 0) { printf("El libro de signatura %d no ha sido localizado.", signatura_a_prestar); } getchar(); fclose(fichero_libros); } void listar_todo (void) { struct Tficha libro; FILE * fichero_libros; fichero_libros = fopen ("libros.vaf", "rb"); system ("cls"); printf("\n\nListado completo\n\n"); while (feof (fichero_libros)== 0) { fread (&libro, sizeof(libro), 1, fichero_libros); if (feof (fichero_libros)== 0) { printf("\nSignatura: %d", libro.signatura); printf("\nTitulo: %s", libro.titulo); printf("\nAutor: %s", libro.autor); printf("\nPrestado: %d", libro.prestado); printf("\nBorrado: %d\n", libro.borrado); } } printf("\n\nPulse una tecla para continuar...."); getchar(); fclose (fichero_libros); } void introducir_libro_nuevo (void) { struct Tficha libro; FILE * fichero_libros; FILE * fichero_signatura; int siguiente_signatura; fichero_signatura = fopen ("signatura.vaf", "rb"); rewind(fichero_signatura); //se lee el dato almacenado en signatura.vaf que corresponde a la ultima utilizada fread (&siguiente_signatura, sizeof(siguiente_signatura), 1, fichero_signatura); fclose(fichero_signatura); //se incrementa en uno la signatura leida para poder utilizarla en el siguiente libro siguiente_signatura++; printf("\nLa signatura correspondiente es %d.", siguiente_signatura); fichero_libros = fopen ("libros.vaf", "ab"); libro.signatura = siguiente_signatura; printf("\nTitulo: "); gets (libro.titulo); printf("Autor "); gets (libro.autor); printf("Editorial: "); gets (libro.editorial); printf("Genero: "); gets (libro.genero); printf("Idioma: "); gets (libro.idioma); printf("ISBN: "); gets (libro.isbn); printf("Numero de paginas: "); scanf ("%d",&libro.n_paginas); fflush(stdin); printf("Precio: "); scanf ("%f",&libro.precio); fflush(stdin); libro.borrado = 0; libro.prestado = 0; fwrite (&libro, sizeof(libro), 1, fichero_libros); fclose (fichero_libros); fichero_signatura = fopen ("signatura.vaf", "wb"); //se lee el dato almacenado en signatura.vaf que corresponde a la ultima utilizada fwrite (&siguiente_signatura, sizeof(siguiente_signatura), 1, fichero_signatura); fclose(fichero_signatura); } void crear_ficheros (void) { FILE * fichero_libros; FILE * fichero_signatura; int signatura = 0; fichero_libros = fopen ("libros.vaf", "rb"); fichero_signatura = fopen ("signatura.vaf", "rb"); if (fichero_libros == NULL) // si devuelve NULL lo abrimos como wb para crearlo vacio { fichero_libros = fopen ("libros.vaf", "wb"); } if (fichero_signatura == NULL) { fichero_signatura = fopen ("signatura.vaf", "wb"); //incluimos un cero como valor de la ultima signatura fwrite (&signatura, sizeof(signatura), 1, fichero_signatura); } fclose(fichero_libros); fclose(fichero_signatura); } void ordenar_fichero_seleccion_directa (void) { struct Tficha auxiliar, menor, actual; FILE * fichero; int i, j,pos_menor, total_estructuras; //se abre el fichero como rb+ para poder sobreescribir los datos fichero = fopen("copia_libros.vaf", "rb+"); //nos colocamos al final del fichero y con ftell y sizeof obtenemos el //numero total de estructuras almacenadas en el fichero fseek (fichero, 0, SEEK_END); total_estructuras = ftell (fichero) / sizeof (struct Tficha); printf("\nO numero de estructuras e: %d, comezando proceso de ordenacion\n", total_estructuras); //regresamos al principio del fichero //rewind(fichero); for (i=0; i<=(total_estructuras - 2); i++) //k es la posicion de la estructura que se esta a pegar { pos_menor=i; fseek (fichero, i * sizeof (struct Tficha), SEEK_SET); //leemos en ficha aux la posicion a escribir fread (&menor, sizeof (struct Tficha), 1, fichero); auxiliar = menor; for (j=i+1; j<=(total_estructuras - 1); j++) { fseek (fichero, j * sizeof (struct Tficha), SEEK_SET); //leemos en ficha aux la posicion a escribir fread (&actual, sizeof (struct Tficha), 1, fichero); if ( strcmpi(menor.titulo, actual.titulo) > 0) { pos_menor=j; menor=actual; } } if (pos_menor != i) { fseek (fichero, i * sizeof (struct Tficha), SEEK_SET); //leemos en ficha aux la posicion a escribir fwrite (&menor, sizeof (struct Tficha), 1, fichero); //vector[i] = vector[k]; fseek (fichero, pos_menor * sizeof (struct Tficha), SEEK_SET); //leemos en ficha aux la posicion a escribir fwrite (&auxiliar, sizeof (struct Tficha), 1, fichero); } } fclose(fichero); }
No hay comentarios:
Publicar un comentario