#include <stdio.h> #include <stdlib.h> #define MAXTLEN 70 #define MAXALEN 70 #define MAXBKS 10 struct book{ char title[MAXTLEN]; char author[MAXALEN]; float value; }; int main(){ struct book library[MAXBKS]; //图书馆 int count = 0, index, filecount; int size = sizeof(struct book); //这点值得注意 FILE *pbooks; if((pbooks = fopen("book.dat","a+b")) == NULL){ fputs("Can not open book.dat file\n", stderr); exit(1); } rewind(pbooks); while(count < MAXBKS && fread(&library[count],size,1,pbooks) == 1){ if(count == 0){ puts("Current contents of book.dat: "); } printf("%s by %s: $%.2f\n",library[count].title,library[count].author,library[count].value); count++; } filecount = count; if(count == MAXBKS){ fputs("The book.dat file is full",stderr); exit(2); } puts("please add the new book, title:"); while(count < MAXBKS && gets(library[count].title) != NULL && library[count].title[0] != ‘\0‘){ puts("the author:"); gets(library[count].author); puts("the value:"); scanf("%f",&library[count++].value); while(getchar() != ‘\n‘){ continue; } if(count < MAXBKS){ puts("---continue---"); } } if(count > 0){ puts("Here is the list of your books:"); for(index = 0; index<count; index++){ printf("%s by %s: $%.2f\n",library[index].title,library[index].author,library[index].value); } fwrite(&library[filecount],size,count-filecount,pbooks); }else{ puts("No books? Too bad\n"); } puts("Bye\n"); fclose(pbooks); return 0; }
Current contents of book.dat: C语言权威指南 by jimmy: $68.00 PHP项目大全 by jimmy: $99.90 please add the new book, title:
时间: 2024-10-12 06:40:10