Code:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct data
{
int cust_id;
char cust_name[30];
char state[3];
char dis_code;
double balance;
int outstanding_orders;
};
int get_int(char msg[]);
double get_double(char msg[]);
void printfile(data records[],int elementsize);
int binary(data records[], int elementsize, char cust_id_search);
int main()
{
data records[12];
int response;
int elementsize = 0;
int found;
int cust_id_search;
char filename[30];
char buf[10];
FILE *fp;
response = get_int("ENTER A CHOICE(use the numbers):\n1.LOAD THE FILE\n2.LIST THE FILE\n3.SEARCH THE FILE\n4.ADD A RECORD\n5.EXIT THE PROGRAM\n");
while(response != 5)
{
if(response == 1)
{
printf("Enter the name of the file: \n");
gets(filename);
//fp = fopen(filename,"r+");
//if(fp == NULL)
//the above two lines fix the problem but it crashes when
//i try and open file
if(fp = fopen(filename,"r+")== NULL)//ERROR 1
{
printf("CANNOT OPEN FILE\n");
}
else
{
//fp = fopen(filename,"r+");
fscanf(fp,"%d%s%s%c%f%d",records[elementsize].cust_id,
records[elementsize].cust_name,
records[elementsize].state,
records[elementsize].dis_code,
records[elementsize].balance,
records[elementsize].outstanding_orders);
while(!feof(fp))
{
elementsize++;
fscanf(fp,"%d%s%s%c%f%d",records[elementsize].cust_id,
records[elementsize].cust_name,
records[elementsize].state,
records[elementsize].dis_code,
records[elementsize].balance,
records[elementsize].outstanding_orders);
}
}
}
else if(response == 2)
{
printfile(records,elementsize);
}
else if(response == 3)
{
cust_id_search = get_int("Enter the customer ID youd like to search for? \n");
found = binary(records,elementsize,cust_id_search);
if(found == -1)
printf("DATA NOT FOUND\n");
else
printf("%d\n%s\n%s\n%c\n%f\n%d",records[found].cust_id,
records[found].cust_name,
records[found].state,
records[found].dis_code,
records[found].balance,
records[found].outstanding_orders);
}
else if(response == 4)
{
records[elementsize+1].cust_id = get_int("enter the new records customer id\n");
printf("Enter the customers name\n");
gets(records[elementsize+1].cust_name);
printf("Enter the customers State\n");
gets(records[elementsize+1].state);
printf("Enter the customers distribution code\n");
gets(buf);
records[elementsize+1].dis_code = buf[0];
records[elementsize+1].balance = get_double("Enter the customers balance\n");
records[elementsize+1].outstanding_orders = get_int("Enter the customers outstanding orders\n");
elementsize++;
fprintf(fp,"%d\n%s\n%s\n%c\n%f\n%d",records[elementsize].cust_id,
records[elementsize].cust_name,
records[elementsize].state,
records[elementsize].dis_code,
records[elementsize].balance,
records[elementsize].outstanding_orders);
}
else;
}
fclose(fp);
return 0;
}
void printfile(data records[],int elementsize)
{
for(int x = 0;x < elementsize;x++)
printf("%d\n%s\n%s\n%c\n%f\n%d\n",records[x].cust_id,
records[x].cust_name,
records[x].state,
records[x].dis_code,
records[x].balance,
records[x].outstanding_orders);
}
int binary(data records[], int elementsize, char cust_id_search)
{
int first = 0;
int last = elementsize - 1;
int found = 0;
int mid;
while(first <= last && found == 0)
{
mid = (first + last)/2;
if(records[mid].cust_id == cust_id_search)
{
found = 1;
}
else if(records[mid].cust_id < cust_id_search)
{
first = mid + 1;
}
else
last = mid - 1;
}
if(found == 0)
mid = -1;
else;
return mid;
}
//gets an integer from the keyboard
int get_int(char msg[])
{
char buf[40];
printf(msg);
gets(buf);
return atoi(buf);
}
//gets a double from the keyboard
double get_double(char msg[])
{
char buf[40];
printf(msg);
gets(buf);
return atof(buf);
}
c:\skool\program 3\proj 3\assignment3.cpp(43): error C2440: '=' : cannot convert from 'bool' to 'FILE *'