•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the C++ section within the Software Development category of DaniWeb, a massive community of 396,966 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,985 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C++ advertiser:
Views: 278 | Replies: 3
![]() |
•
•
Join Date: May 2008
Posts: 16
Reputation:
Rep Power: 1
Solved Threads: 0
i ended up doing it woithout that function. nov ive got a bigger issue,im trying to make a database of patients and i am working on writing 2 of 8 of the functions in the menu. displaypatients is supposed to display all the info for the patients 1 by 1, and addpatient is supposed to add a patient to an array of patientstructs in the file. i currently can add one patient, then display him, that works. but if i try to add another patient, the first gets all messed up. i believe the fault lies with my fwrite function wich is marked with a /**/ before it:
#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)
{
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","w");
/**/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;
numread = fread((patientstructpointer)[*count],sizeof(*patientstructpointer),1,fp);
fflush(stdin);
printf("\npatient's first name\n");
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);
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(;;);
}
•
•
Join Date: Apr 2008
Posts: 295
Reputation:
Rep Power: 1
Solved Threads: 41
Line
opens patientdirectory in read mode only. You may add + or b+ to open it for appending a text file ("r+") or binary file ("rb+").
You must have gotten an error message when trying to write data on file opend with "r" mode using fwrite.
c Syntax (Toggle Plain Text)
fp=fopen("c:\\patientdirectory.txt","r");
You must have gotten an error message when trying to write data on file opend with "r" mode using fwrite.
•
•
Join Date: Jan 2008
Posts: 1,449
Reputation:
Rep Power: 6
Solved Threads: 185
•
•
•
•
what are you talking about? i opened it for writing the very line above!
cplusplus Syntax (Toggle Plain Text)
void addpatient(patientstruct (*patientstructpointer)[maxpatients], int (*count)=0) { 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","w"); /**/fwrite ((patientstructpointer)[*count],sizeof(*patientstructpointer),1,fp); }
He's talking about line 6. You open fp on line 6 with the read flag, , then reopen it on line 142 with the write flag. Do you you ever close it in between? I don't know whether that matters or not since I'm not very familiar with C. I've had that kind of thing cause me trouble in C++ though. You might want to repost in the C forum because this looks like C code.
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
•
•
•
•
•
•
•
•
DaniWeb C++ Marketplace
•
•
•
•
access activation api blogger blogging blogs code code injection combo dani daniweb data debugging development dreamweaver dropdownlist epilepsy gdata google gpl griefers hackers html innovation intel javascript key linux microsoft module net news openbsd product programming reuse rss serial short selling source tags tech stocks vista web wysiwyg xml
- Performance Question (Java)
- CIS or CS degree question?? (Computer Science and Software Design)
- i really hate pointers (C++)
- Completed Code but A LOT of GOTO...Replacement? (C++)
- C++ question(Decimal places)very weird (C++)
- Please can anybody give me an example (C)
- I just found this code for PAC MAN...what does this mean??? (Java)
- Another question regarding memory (C)
- Using binary operators! (C)
- 4 short programs (Java)
Other Threads in the C++ Forum
- Previous Thread: Question for you guys...
- Next Thread: Create Folder



Linear Mode