天天看点

CTest[1]Struct综合

#include <stdio.h>

#include <stdlib.h>

#define MAXTITL 40

#define MAXAUTH 40

#define MAXBKS 10

struct book {

    char title[MAXTITL];

    char author[MAXAUTH];

    float value;

};

int main(void){

    struct book library[MAXBKS];

    int count=0;

    int index,filecount;

    FILE *pbooks;

    int size=sizeof(struct book);

    if((pbooks=fopen("book.dat","a+b"))==NULL){

        fputs("Can't 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 new book titles.");

    puts("Press [enter] at the start of a line to stop.");

    while(count<MAXBKS&&gets(library[count].title)!=NULL&&library[count].title[0]!='\0'){

        puts("Now enter the author.");

        gets(library[count].author);

        puts("Now enter the value.");

        scanf("%f",&library[count++].value);

        while(getchar()!='\n'){

            continue;

        if(count<MAXBKS){

            puts("Enter the next title.");

    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;

}

本文转sinojelly51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/412492,如需转载请自行联系原作者

继续阅读