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);
}
结构体sizeofrewind(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);
return0;
}
Current contents of book.dat:
C语⾔权威指南 by jimmy: $68.00
PHP项⽬⼤全 by jimmy: $99.90
please add the new book, title:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论