FILE * optimize_database( FILE *original_db, int sorted, long total ){ struct StudentInfo * stu[total]; //GET USER CHOICE FILE *new_db = original_db; int choice = get_optimize_choice(); if( choice == 0 ){ return original_db; } //CONDUCT USER CHOICE new_db = fopen( NEW_DB_FILE, "w+" ); long stu_count = read_original_db( original_db, total, stu ); if( choice == 1 ){ if( sorted == 'n' ){ puts( "Sorting students......" ); sort_stu( stu, stu_count ); sorted = 'y'; new_db = write_new_db( original_db, new_db, sorted, stu_count, stu ); }else{ puts( "The students have been sorted befor; Now, I deleted removed students info." ); new_db = write_new_db( original_db, new_db, sorted, stu_count, stu ); } }else if( choice == 2 ){ puts( "Deleting Removed students......"); new_db = write_new_db( original_db, new_db, sorted, stu_count, stu ); puts( "Delete Successfully" ); } //RETURN NEW-DB printf( "\n> Press any key to continue: "); getchar(); return new_db; }
int main(int argc, char *argv[]) { if (argc < 2) { printf("./a.out stufile stufile_bin\n" "or ./a.out stufile_bin\n"); exit(-1); } int n; if (strcmp(argv[1], "stufile") == 0) { FILE *fp = fopen(argv[1], "r"); if (fp == NULL) { perror(argv[1]); exit(-1); } FILE *fp_bin = fopen(argv[2], "w"); if (fp_bin == NULL) { perror(argv[2]); exit(-1); } n = cnt_stu(fp); #ifdef DEBUG printf("n = %d\n", n); #endif struct STU a[n]; rewind(fp); read_file(fp, a, n); sort_stu(a, n); show_stu(a, n); write_file_bin(fp_bin, a, n); fclose(fp); fclose(fp_bin); } else if (strcmp(argv[1], "stufile_bin") == 0) { FILE *fp = fopen(argv[1], "r"); int n = read_file_bin_head(fp); struct STU a[n]; read_file_bin(fp, a, n); show_stu(a, n); fclose(fp); } return 0; }