C语言:将结构体存放到文件中
#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:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。