#include
#include
#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 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 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){
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: