Code:
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#include<time.h>
struct work{
char fname[10][10];
char lname[10][10];
char id[10][10];
float sal[10];
};
FILE*comp;
void fcheck(),fupdate(),menu(),file(int);
int accept();
time_t t;
int main(){
menu();
getchar();
}
void menu(){
printf("Welcome to Test Database. Please select an option below:\n\t1-Enter records\n\t2-Update records\n\t3-View Records\n\t4-Erase records\n\t5-Exit\n");
}
int accept(){//stores option number
int n;
scanf("%d",&n);
getchar();
return n;
}
void file(int x){//accept option number
struct work work;
time(&t);
int a;
if(x==1){
comp = fopen("C:\\Dur\\company.txt","a+");
//fcheck();
for(a=0;a<=9;a++){
printf("First name:\t");
fgets(work.fname[a],10,stdin);
work.fname[a][strlen(work.fname[a])-1]='\0';
printf("Last name:\t");
fgets(work.lname[a],10,stdin);
work.lname[a][strlen(work.lname[a])-1]='\0';
printf("ID:\t");
fgets(work.id[a],10,stdin);
work.id[a][strlen(work.id[a])-1]='\0';
printf("Salary:\t");
scanf("%f",&work.sal[a]);
getchar();
system("cls");
fprintf(comp,"%s:\t",work.fname[a]);
fprintf(comp,"%s:\t",work.lname[a]);
fprintf(comp,"%s\t",work.id[a]);
fprintf(comp,"%.2f:\t\n",(float)work.sal[a]);
}
fprintf(comp,"\n\nLast Data Entry/Update:\t",ctime(&t));
fclose(comp);
}else if(x==2){
comp = fopen("C:\\Dur\\company.txt","a+");
fcheck();
fupdate();
fclose(comp);
}else if(x==3){
char fnamev[10][10];
char lnamev[10][10];
char idv[10][10];
float salv;
while(!feof(comp)){
int z = 0;
fscanf(comp,"%s %s %s %f",fnamev[z],lnamev[z],idv[z]);
printf("%s %s %s %.2f\n",fnamev[z],lnamev[z],idv[z]);
z++;
}
fclose(comp);
}else if(x==4){
comp = fopen("C:\\Dur\\company.txt","w");
printf("File successfully erased");
fclose(comp);
}else if(x==5){
exit(0);
}
}
void fcheck(){
if(comp==NULL){
printf("File Read Error\n");
}else{
printf("File opened successfully\n");
sleep(2000);
system("cls");
}
}
void fupdate(){
time(&t);
char fnameu[10];
char lnameu[10];
char idu[10];
float salu;
comp = fopen("C:\\Dur\\company.txt ","a");
fcheck();
printf("First name:\t");
fgets(fnameu,10,stdin);
fnameu[strlen(fnameu)-1]='\0';
printf("Last name:\t");
fgets(lnameu,10,stdin);
lnameu[strlen(lnameu)-1]='\0';
printf("ID:\t");
fgets(idu,10,stdin);
idu[strlen(idu)-1]='\0';
printf("Salary:\t");
scanf("%f",&salu);
getchar();
fprintf(comp,"%s:\t",fnameu);
fprintf(comp,"%s:\t",lnameu);
fprintf(comp,"%s\t",idu);
fprintf(comp,"%.2f:\t\n",(float)salu);
fprintf(comp,"\n\nLast Data Entry/Update:\t",ctime(&t));
fclose(comp);
}
It's supposed to be a small database...i'm in the process of learning structs so I decided to try and write a program incorporating it. Problem is that when I enter a number corresponding to an option that shows up on the screen, the program closes off and I can't figure out why it's doing it. The program compiles so I know it's a logic error and not a syntax for sure.