turbo c++ v4.5 compiler
Win ME
Here's my problem..
if i choose to view a record / ALL the record
the program can display it properly BUT it display twice..y?
pls check my below code
Code:#include <stdio.h> #include <conio.h> #include <string.h> struct date_en{ int dd,mm,yy; }; struct data{ int id; char name[20]; char addy[30]; int age; struct date_en date; }; add_new_rec(FILE *ptr) { ptr=fopen("details.dat","a+"); struct data info; printf("Enter ID: "); info.id=0; while(info.id < 1000 || info.id > 9999) { scanf("%d",&info.id); } printf("\nEnter Name: "); scanf(" %[^\n]",info.name); fflush(stdin); printf("\nEnter Addy: "); scanf(" %[^\n]",info.addy); fflush(stdin); printf("\nEnter age: "); scanf("%d",&info.age); printf("Enter date: "); scanf("%d",&info.date.dd); printf("/"); scanf("%d",&info.date.mm); printf("/"); scanf("%d",&info.date.yy); fwrite(&info,sizeof(struct data),1,ptr); fclose(ptr); return 0; } void view_all_rec(FILE *fptr) { struct data info; fptr=fopen("details.dat","r"); rewind(fptr); while(!feof(fptr) ) { fread(&info,sizeof(struct data),1, fptr); printf("%d\n",info.id); printf("%s\n",info.name); printf("%s\n",info.addy); printf("%d\n",info.age); printf("%d/%d/%d",info.date.dd,info.date.mm,info.date.yy); printf("press any key for next record!"); getch(); } fclose(fptr); } void view_rec(FILE *ptr) { struct data info; ptr=fopen("details.dat","r"); int searchkey; printf("Input ID no to search"); scanf("%d",&searchkey); // rewind(ptr); while(!feof(ptr) ) { fread(&info,sizeof(struct data),1, ptr); if (info.id == searchkey) { printf("%d\n",info.id); printf("%s\n",info.name); printf("%s\n",info.addy); printf("%d\n",info.age); printf("%d/%d/%d",info.date.dd,info.date.mm,info.date.yy); getch(); } } fclose(ptr); } int print_menu() { int choice; printf("##########################\n"); printf("# 1.Add New Record #\n"); printf("# 2.View Record #\n"); printf("# 3.View all Record #\n"); printf("##########################\n"); printf("Please choose what option you want:"); scanf("%d",&choice); return choice; } main() { FILE *ptr; char dum; int choose; if((ptr = fopen ("details.dat","r"))==NULL){ ptr = fopen ("details.dat","w"); } do { choose=print_menu(); switch(choose) { case 1: add_new_rec(ptr); break; case 2: view_rec(ptr); break; case 3: view_all_rec(ptr); break; default: printf("Error - Wrong Option!"); scanf("%c",&dum); getch(); clrscr(); } } while (choose !=3); return 0; }



LinkBack URL
About LinkBacks


