PLEASE DO NOT BE INTIMIDATED BY THE SIZE OF MY CODE, I BELIEVE THE PROBLEM IS VERY SIMPLE AND IT IS MARKED WITH /*ERROR*/. when i run the exe, i can add 2 patients easily to the file. then i try to display them. it displays the first one just fine, but the second it tries to display the first value in the [1]th element of the array, i get an error message. that part of my code is marked with a /*ERROR*/ just before it. easy to find plz help this is due monday. if u can solve my problem then just give me a jpeg and will erect a 500 meter idol of worship in your image. heres my code Code: #include "iostream" #include "stdio.h" #include "stdlib.h" #include "string.h" #include "process.h" #define maxpatients 8 using namespace std; void main(); struct namestruct { char firstName[32]; char middleI; char lastName[32]; }; struct addressstruct { char streetAddress[32]; char city[32]; char state[3]; int zipcode; }; struct locationstruct { int numFloor; int numRoom; unsigned char subLocation; }; struct geninfostruct { addressstruct address; char phoneNumber[12]; }; struct insuranceinfostruct { char nameCarrier[32]; geninfostruct insurancegeninfo; float deductable; }; struct datestruct { int day; int month; int year; }; struct patientstruct { namestruct namepatient; int age; geninfostruct geninfopatient; insuranceinfostruct insurence; datestruct dischargedate; locationstruct locationpatient; char information[1024]; }; char menu() { char option1; do { system("cls"); printf("press a coresponding key and then press enter to choose an option:\n1. open a file\n2. write database to file\n3. display patients\n4. find a patient\n5. add a patient\n6. delete a patient\n7. move a patient\n8.print out patients by discharge date\n"); option1 = getchar(); } while (option1<'1' || option1 > '7'); fflush(stdin); return option1; } void addpatient(patientstruct (*patientstructpointer)[maxpatients], int (*count)=0) { patientstruct patientstruct1[maxpatients]; int numread; char yesno; FILE *fp; fp=fopen("c:\\patientdirectory.txt","r"); if(fp==NULL) { printf("file not found. create one?y/n"); fflush(stdin); do { // scanf_s("%c",&yesno); cin>>yesno; switch(yesno) { case 'y': break; case 'n': main(); break; default: printf("please enter y for yes or n for no and press enter"); break; } }while(yesno!='y'); } else { while (!feof(fp)) { numread = fread((patientstructpointer)[*count],sizeof(*patientstructpointer),1,fp); (*count)++; } } system("cls"); fflush(stdin); printf("\nEnter the patient's first name\n"); gets_s((*patientstructpointer)[*count].namepatient.firstName); fflush(stdin); printf("\nEnter the patient's middle initial\n"); (*patientstructpointer)[*count].namepatient.middleI=getchar(); fflush(stdin); printf("\nEnter the patient's last name\n"); gets_s((*patientstructpointer)[*count].namepatient.firstName); fflush(stdin); printf("\nEnter the patient's age\n"); scanf_s("%d",&(*patientstructpointer)[*count].age); fflush(stdin); printf("\nEnter the patient's state of residence\n"); gets_s((*patientstructpointer)[*count].geninfopatient.address.state); printf("\nEnter the patient's city of residence\n"); gets_s((*patientstructpointer)[*count].geninfopatient.address.city); fflush(stdin); printf("\nEnter the patient's zipcode of residence\n"); scanf_s("%d",&(*patientstructpointer)[*count].geninfopatient.address.zipcode); fflush(stdin); printf("\nEnter the patient's street address of residence\n"); gets_s((*patientstructpointer)[*count].geninfopatient.address.streetAddress); fflush(stdin); printf("\nEnter the patient's phone number\n"); gets_s((*patientstructpointer)[*count].geninfopatient.phoneNumber); fflush(stdin); printf("\nEnter the patient's insurance carrier's name\n"); gets_s((*patientstructpointer)[*count].insurence.nameCarrier); fflush(stdin); printf("\nEnter the patient's insurance carrier's state\n"); gets_s((*patientstructpointer)[*count].insurence.insurancegeninfo.address.state); fflush(stdin); printf("\nEnter the patient's insurance carrier's city\n"); gets_s((*patientstructpointer)[*count].insurence.insurancegeninfo.address.city); fflush(stdin); printf("\nEnter the patient's insurance carrier's zipcode\n"); scanf_s("%d",&(*patientstructpointer)[*count].insurence.insurancegeninfo.address.zipcode); fflush(stdin); printf("\nEnter the patient's insurance carrier's street address\n"); gets_s((*patientstructpointer)[*count].insurence.insurancegeninfo.address.streetAddress); fflush(stdin); printf("\nEnter the patient's insurance carrier's deductable\n"); scanf_s("%f",&(*patientstructpointer)[*count].insurence.deductable); fflush(stdin); printf("\nEnter the patient's year of discharge\n"); scanf_s("%d",&(*patientstructpointer)[*count].dischargedate.year); fflush(stdin); printf("\nEnter the patient's month of discharge\n"); scanf_s("%d",&(*patientstructpointer)[*count].dischargedate.month); fflush(stdin); printf("\nEnter the patient's day of discharge\n"); scanf_s("%d",&(*patientstructpointer)[*count].dischargedate.day); fflush(stdin); printf("\nEnter the patient's floor number\n"); scanf_s("%d",&(*patientstructpointer)[*count].locationpatient.numFloor); fflush(stdin); printf("\nEnter the patient's room number\n"); scanf_s("%d",&(*patientstructpointer)[*count].locationpatient.numRoom); fflush(stdin); printf("\nEnter the patient's location number\n"); //location ((*patientstructpointer)[*count].locationpatient.subLocation)=1; int locationnumber; scanf_s("%d",&locationnumber); switch(locationnumber) { case 1: break; case '2': ((*patientstructpointer)[*count].locationpatient.subLocation)=((*patientstructpointer)[*count].locationpatient.subLocation)<<1; break; case '3': ((*patientstructpointer)[*count].locationpatient.subLocation)=((*patientstructpointer)[*count].locationpatient.subLocation)<<2; break; case '4': ((*patientstructpointer)[*count].locationpatient.subLocation)=((*patientstructpointer)[*count].locationpatient.subLocation)<<3; break; case '5': ((*patientstructpointer)[*count].locationpatient.subLocation)=((*patientstructpointer)[*count].locationpatient.subLocation)<<4; break; case '6': ((*patientstructpointer)[*count].locationpatient.subLocation)=((*patientstructpointer)[*count].locationpatient.subLocation)<<5; break; case '7': ((*patientstructpointer)[*count].locationpatient.subLocation)=((*patientstructpointer)[*count].locationpatient.subLocation)<<6; break; case '8': ((*patientstructpointer)[*count].locationpatient.subLocation)=((*patientstructpointer)[*count].locationpatient.subLocation)<<7; break; default: printf("you're fired"); } fflush(stdin); printf("\nEnter the patient's description (less than 1023 characters please)\n"); gets_s((*patientstructpointer)[*count].information); fp=fopen("c:\\patientdirectory.txt","a"); /**/fwrite ((patientstructpointer)[*count],sizeof((*patientstructpointer)),1,fp); } void displaypatients() { FILE *fp; fp=fopen("c:\\patientdirectory.txt","r"); patientstruct (*patientstructpointer)[maxpatients]; patientstruct (patientstruct1)[maxpatients]; (patientstructpointer)=&(patientstruct1); int numread; int *count; int asa; count=&asa; asa=0; while (!feof(fp)) { numread = fread((patientstructpointer)[*count],sizeof(*patientstructpointer),1,fp); fflush(stdin); printf("\npatient's first name\n"); /*ERROR*/ puts((*patientstructpointer)[*count].namepatient.firstName); fflush(stdin); printf("\npatient's middle initial\n"); printf("%c",(*patientstructpointer)[*count].namepatient.middleI); fflush(stdin); printf("\npatient's last name\n"); puts((*patientstructpointer)[*count].namepatient.firstName); fflush(stdin); printf("\npatient's age\n"); printf("%d",(*patientstructpointer)[*count].age); fflush(stdin); printf("\npatient's state of residence\n"); puts((*patientstructpointer)[*count].geninfopatient.address.state); printf("\npatient's city of residence\n"); puts((*patientstructpointer)[*count].geninfopatient.address.city); fflush(stdin); printf("\npatient's zipcode of residence\n"); printf("%d",(*patientstructpointer)[*count].geninfopatient.address.zipcode); fflush(stdin); printf("\npatient's street address of residence\n"); puts((*patientstructpointer)[*count].geninfopatient.address.streetAddress); fflush(stdin); printf("\npatient's phone number\n"); puts((*patientstructpointer)[*count].geninfopatient.phoneNumber); fflush(stdin); printf("\npatient's insurance carrier's name\n"); puts((*patientstructpointer)[*count].insurence.nameCarrier); fflush(stdin); printf("\npatient's insurance carrier's state\n"); puts((*patientstructpointer)[*count].insurence.insurancegeninfo.address.state); fflush(stdin); printf("\npatient's insurance carrier's city\n"); puts((*patientstructpointer)[*count].insurence.insurancegeninfo.address.city); fflush(stdin); printf("\npatient's insurance carrier's zipcode\n"); printf("%d",(*patientstructpointer)[*count].insurence.insurancegeninfo.address.zipcode); fflush(stdin); printf("\npatient's insurance carrier's street address\n"); puts((*patientstructpointer)[*count].insurence.insurancegeninfo.address.streetAddress); fflush(stdin); printf("\npatient's insurance carrier's deductable\n"); printf("%f",(*patientstructpointer)[*count].insurence.deductable); fflush(stdin); printf("\npatient's year of discharge\n"); printf("%d",(*patientstructpointer)[*count].dischargedate.year); fflush(stdin); printf("\npatient's month of discharge\n"); printf("%d",(*patientstructpointer)[*count].dischargedate.month); fflush(stdin); printf("\npatient's day of discharge\n"); printf("%d",(*patientstructpointer)[*count].dischargedate.day); fflush(stdin); printf("\npatient's floor number\n"); printf("%d",(*patientstructpointer)[*count].locationpatient.numFloor); fflush(stdin); printf("\npatient's room number\n"); printf("%d",(*patientstructpointer)[*count].locationpatient.numRoom); fflush(stdin); printf("\npatient's location number\n"); //location int locationnumber; switch((*patientstructpointer)[*count].locationpatient.subLocation) { case 1: locationnumber=1; break; case (1<<1): locationnumber=2; break; case (1<<2): locationnumber=3; break; case (1<<3): locationnumber=4; break; case (1<<4): locationnumber=5; break; case (1<<5): locationnumber=6; break; case (1<<6): locationnumber=7; break; case (1<<7): locationnumber=8; break; default: locationnumber=0; printf("you're fired"); } printf("%d",locationnumber); fflush(stdin); printf("\npatient's description (less than 1023 characters please)\n"); puts((*patientstructpointer)[*count].information); (*count)++; } printf("\npress any key to continue\n"); getchar(); } void main() { patientstruct patientstruct1[maxpatients]; char entry; int count = 0; do { entry = menu(); switch(entry) { case '1': break; case '2': break; case '3': displaypatients(); break; case '4': break; case '5': addpatient(&patientstruct1,&count); break; case '6': break; case '7': break; case '8': break; default: printf("you're fired"); } } while (entry != '7'); for(;;); }
yo someone just gave me a hint but they were a little unspecific, he said "it probably didnt clean the buffer between READING the 1st file and inputing the SECOND file" so how do i do that? FFLUSH(STDIN);? system("cls");?
its also interesting that "numread" returns a zero on the first patient and a 1 on the 2nd patient heres my code