#include "stdafx.h"
#include %26lt;stdio.h%26gt;
#include %26lt;stdlib.h%26gt;
#include %26lt;ctype.h%26gt;
#include %26lt;conio.h%26gt;
#include %26lt;string.h%26gt;
struct book
{
char bookID[6];
char title[31];
char author[31];
char copyright[5];
}bookrec;
FILE *bookfile;
int main()
{
bookfile= fopen("BOOK.DAT", "rb");
if(bookfile==NULL)
{
printf("File does not exist, press any key..");
getch();
}
else
{
fread(%26amp;bookrec, sizeof(bookrec), 1, bookfile);
if(feof(bookfile))
{
printf("File is empty, press any key..");
getch();
}
else
searchNupdate();
}
fclose (bookfile);
return 0;
}
void displayTitle(void)
{
printf("\n\t\t==UPDATE A FILE==\n");
printf("\t\t==BOOK==\n");
printf("UPDATE RECORDS:\n\n");
}
void dispRec(void)
{
printf("%s%s%s%s\n",bookrec.bookID,bo...
}
void displayRecord(void)
{
int lineCounter=0;
while(!feof(bookfile))
{
displayTitle();
while(lineCounter%26lt;10 %26amp;%26amp; !feof(bookfile))
{
dispRec();
lineCounter++;
fread(%26amp;bookrec, sizeof(bookrec), 1, bookfile);
}
if(!feof(bookfile))
{
printf("Press any key to continue..");
getch();
}
else
printf("End of file, press any key..");
getch();
}
}
void updateRecord(void)
{
char nBookid[6];
char nTitle[31];
char nAuthor[31];
char nCopyright[5];
int field;
char rep;
do
{
printf("Which field to update[1-4]? :");
scanf("%d", %26amp;field);
while(field%26gt;4)
if(field==1)
{
printf("Input new book ID:");
gets(nBookid);
}
else if(field==2)
{
printf("Input new book title:");
gets(nTitle);
}
else if(field==3)
{
printf("Input new book author:");
gets(nAuthor);
}
else
{
printf("Input new copyright:");
gets(nCopyright);
}
do
{
printf("Update another field(Y/N)? :");
scanf("%c", %26amp;rep);
}
while(tolower(rep)!='y' %26amp;%26amp; tolower(rep)!='n');
} while(rep=='y')
fseek(bookfile, 1, 0);
fwrite(%26amp;bookrec, sizeof(bookrec), 1, (bookfile));
fclose(bookfile);
}
void search(int target[6],int found, int size)
{
int found=0, i;
int count=0;
int field=0;
bookfile= fopen("BOOK.DAT", "r+");
fread(%26amp;bookrec, sizeof(bookrec), 1, bookfile);
while(!feof(bookfile) %26amp;%26amp; found!=0)
{
if(target[i]==field)
{
found=1;
}
else
{
count++;
fread(%26amp;bookrec, sizeof(bookrec), 1, bookfile);
}
}
size= count * sizeof(%26amp;bookrec);
}
void searchNupdate(void)
{
char rep, target[6];
int size=0;
int found=0;
displayTitle();
do
{
printf("Input book ID to be updated:");
gets(target);
search(target,%26amp;found,size);
if(!found)
{
printf("Record is not found\n");
}
else
{
displayRecord();
}
do
{
printf("Update (Y/N)? :");
scanf("%c", %26amp;rep);
}
while(tolower(rep)!='y' %26amp;%26amp; tolower(rep)!='n');
if(rep=='y')
{
updateRecord(%26amp;size);
}
do
{
printf("Update another (Y/N)? :");
fflush(stdin);
scanf("%c", %26amp;rep);
}while(tolower(rep)!='y' %26amp;%26amp; tolower(rep)!='n');
}
while(rep=='y');
fclose(bookfile);
}
Can you help me debug this c++ program [update a file]?
Can you give a hint on what function the error occurred?
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment