Code:
int saveDatabaseFile(RECORD *, char *, int *, int *, int *);
int loadDatabaseFile(RECORD *, char *, int *, int *, int *);
int ReallocateMemory(RECORD *, int *);
int AllocateMemory(RECORD *);
int saveDatabaseFile(RECORD * ptrDatabase, char * fname, int * counter, int * lastRecordID, int * changesMade){
RECORD * ptrNew;
int i;
FILE * ptrFile;
clrscr();
ptrFile=fopen(fname, "wb");
if(ptrFile==NULL){
printf("\n Error Opening Database File!\n\n Please Press Any Key To Continue >");
getch();
clrscr();
return 0;
}
ptrNew = ptrDatabase;
fwrite(lastRecordID, sizeof(int), 1, ptrFile);
for (i=0; i < * counter; i++){
if(ptrNew->ID != 0){
fwrite(ptrNew, sizeof(RECORD), 1, ptrFile);
}
ptrNew++;
}
fclose(ptrFile);
* changesMade = 0;
return 1;
}
int loadDatabaseFile(RECORD * ptrDatabase, char * fname, int * counter, int * lastRecordID, int * currentMemSize){
RECORD temp;
RECORD * ptrNew;
int i, length;
char buffer[100];
FILE * ptrFile;
ptrFile=fopen(fname, "rb");
if(ptrFile==NULL){
printf("\n Error Opening Database File!\n\n Please Press Any Key To Continue >");
getch();
clrscr();
return 0;
}
ptrNew = ptrDatabase;
fread( lastRecordID, sizeof(int), 1, ptrFile );
while(fread( &temp, sizeof(RECORD), 1, ptrFile )){
if(*counter >= *currentMemSize){
if(ReallocateMemory(ptrDatabase, currentMemSize) == 0){
printf("An Error Has Occured Reallocating Memory.\n\nPress Any Key To Continue.");
getch();
return 0;
}
}
*ptrNew = temp;
ptrNew++;
(*counter)++;
}
fclose(ptrFile);
return 1;
}
int ReallocateMemory(RECORD * ptrDatabase, int * currentMemSize) {
RECORD * ptrNew;
ptrNew = (RECORD *) realloc(ptrDatabase, (*currentMemSize + memIncrease) * sizeof(RECORD));
if (ptrNew == NULL){
return 0;
}
else{
ptrDatabase = ptrNew;
*currentMemSize += memIncrease;
return 1;
}
}
int AllocateMemory(RECORD * ptrDatabase) {
ptrDatabase = (RECORD *) calloc(memIncrease, sizeof(RECORD));
if (ptrDatabase == NULL){
return 0;
}
else{
return 1;
}
}
These are the functions to do with memory allocation and file i/o. Thanks alot for all your help.
Chris
ps. anythin else you need to know just let me know