/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Loesung der Uebungsaufgabe Kapitel 7, Nr. 4 */ /* aus "C fuer Java-Programmierer", Hanser-Verlag */ /***************************************************************/ #include int main(void) { int i, size; char nochmal, aendern; FILE *fp; struct angestellten_info { char name[41]; int personalnummer; float gehalt; } a; /* size = Größe einer Struktur */ size = sizeof(struct angestellten_info); /* Initialisierung der Datei mit 20 Strukturwerten */ fp = fopen("datei","w+b"); for (i=0;i<20;i++) { a.personalnummer = i; a.gehalt = 3500 + i*13; strcpy(a.name,"Mueller"); sprintf(&(a.name[7]),"%2.2d",i); fwrite(&a,size,1,fp); } do { do { printf("\nNummer des Datensatzes (zwischen 0 und 19)? "); scanf("%d",&i); } while (i<0||i>19); fseek(fp,i*size,SEEK_SET); fread(&a,size,1,fp); printf("\nEintrag Nr. %d: %d %.2f %s\n\n",i,a.personalnummer,a.gehalt,a.name); fflush(stdin); printf("Eintrag aendern? "); aendern = getchar(); if (aendern=='j'||aendern=='J') { printf("\nNeue Personalnummer? "); scanf("%d",&(a.personalnummer)); printf("\nNeues Gehalt? "); scanf("%f",&(a.gehalt)); printf("\nNeuer Name? "); scanf("%s",&(a.name)); fseek(fp,i*size,SEEK_SET); fwrite(&a,size,1,fp); printf("\nEintrag Nr. %d geaendert\n",i); } fflush(stdin); printf("\nNoch einmal? "); nochmal = getchar(); } while(nochmal=='j'||nochmal=='J'); fclose(fp); return 0; }