/* kreator, system admins inc. Sat May 23 09:42:02 CEST 1998 Linux amanda 2.1.102 #6 Fri May 22 18:52:56 CEST 1998 i486 unknown Debian GNU/Linux 2.0 amanda */ #include #include #include /* #include */ /* data structure definition */ typedef struct { char full_name[40+1]; int score; float time; } data_t; /* on-error function */ void fatal(const char *msg) { puts(msg); exit(EXIT_FAILURE); } /* data file initialisation and loading */ void data_init(FILE *input, FILE *output) { data_t tmp; memset((data_t *) &tmp, 0, sizeof(data_t)); while (fscanf(input,"%s",tmp.full_name)!=EOF) fwrite(&tmp,sizeof(data_t),1,output); puts("data initialised.."); } /* data entry */ void load_data(FILE *dat) { data_t tmp,junk; printf("enter new data:\n(to end enter 'end' for name)\n"); do { fseek(dat,0L,SEEK_SET); printf("enter name of participant: "); scanf("%s", tmp.full_name); if (!strcmp("end",tmp.full_name)) break; while(fread(&junk,sizeof(junk),1,dat)) { if (!strcmp(tmp.full_name,junk.full_name)) { printf("enter score "); scanf("%d", &tmp.score); printf("enter time "); scanf("%f", &tmp.time); fseek(dat,-sizeof(data_t),SEEK_CUR); fwrite(&tmp,sizeof(data_t),1,dat); break; } } } while(1); } /* main function */ int main(void) { FILE *input, *output; if (!(input=fopen("PETROVIC","rt"))) fatal("I/O error"); if (!(output=fopen("TANJA","w+b"))) fatal ("I/O error"); data_init(input,output); load_data(output); fclose(input); fclose(output); return(EXIT_SUCCESS); }