1 / 12

Bitfält exempel

Bitfält exempel. Nu kommer ett förbättrat program. Det är funktions-uppdelat och kan lägga till poster som lagras på fil. Bitfält exempel. Strukturen ser ut som tidigare. #include <stdio.h> #include <stdlib.h> typedef struct { unsigned ar : 7, manad :4, dag :5, kontroll :14, :2,

lindsay
Télécharger la présentation

Bitfält exempel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bitfältexempel Nu kommer ett förbättrat program. Det är funktions-uppdelat och kan lägga till poster som lagras på fil

  2. Bitfältexempel Strukturen ser ut som tidigare #include <stdio.h> #include <stdlib.h> typedef struct { unsigned ar : 7, manad :4, dag :5, kontroll :14, :2, unsigned ten1 :4, ten2 :4, lab :4, proj :4 ; } studentDataTyp ; FILE* OppnaFil( studentDataTyp*, int* ); void StangFil( FILE* , studentDataTyp*, int ); void Inmatning( studentDataTyp*, int*, int ); void Kontroll( studentDataTyp*, int ); Programmets funktioner

  3. ProgrammeringsidéStudenterna är indelade i grupper om max 30 st. Varje gupp motsvaras av en egen datafil.Uppdatera studentdata genom att läsa in alla poster från datafilen till en vektor. Bearbeta posterna i vektorn och när allt är klart så skriv tillbaks alla posterna till datafilen. Bitfältexempel Antal studenter i arrayen. Detta värde hålls hela tiden aktuellt Antal studenter som skall tilllfogas int main( void ) { studentDataTyp studentVektor[30]; int antal=0, xAntal ; FILE* filPek=NULL; filPek = OppnaFil( studentVektor, &antal ); printf("Hur många studenters prestationer skall matas in?--> "); scanf("%d", &xAntal ); Inmatning( studentVektor, &antal, xAntal ); Kontroll( studentVektor, antal ); StangFil( filPek, studentVektor, antal ); return; }

  4. Bitfältexempel int main( void ) { studentDataTyp studentVektor[30]; int antal=0, xAntal ; FILE* filPek=NULL; filPek = OppnaFil( studentVektor, &antal ); printf("Hur många studenters prestationer skall matas in?--> "); scanf("%d", &xAntal ); Inmatning( studentVektor, &antal, xAntal ); Kontroll( studentVektor, antal ); StangFil( filPek, studentVektor, antal ); return; } Kan du motivera varför parameterlistan ser ut som den gör? nästa bild

  5. Bitfältexempel Ur main() FILE* OppnaFil( studentDataTyp pVektor[], int* antalPek ){ FILE* filPek; char filnamn[20]; printf("\nVilken fil skall öppnas? --> "); scanf("%s",filnamn); if ( (filPek=fopen(filnamn,"r+b")) != NULL ) while (fread(&pVektor[*antalPek],sizeof(studentDataTyp) ,1,filPek)) (*antalPek)++ ; else filPek=fopen(filnamn,"w+b"); return filPek; }

  6. void Inmatning( studentDataTyp pVektor[], int* antalPek, int extra ){ int i, temp; for ( i=(*antalPek) ; i < (*antalPek)+extra ; i++ ) { printf("\nStudent nr%d :\n", i+1); printf("==============\n"); printf("Född år, xx -> "); scanf("%d",&temp); pVektor[i].ar = temp ; printf(" månad, xx -> "); scanf("%d",&temp); pVektor[i].manad = temp ; printf(" dag, xx -> "); scanf("%d",&temp); pVektor[i].dag = temp ; printf("konrollnummer,xxxx -> "); scanf("%d",&temp); pVektor[i].kontroll = temp ; printf("TEN1 betyg -> "); scanf("%d",&temp); pVektor[i].ten1 = temp ; printf("TEN2 betyg -> "); scanf("%d",&temp); pVektor[i].ten2 = temp ; printf("LAB betyg -> "); scanf("%d",&temp); pVektor[i].lab = temp ; printf("PROJ betyg -> "); scanf("%d",&temp); pVektor[i].proj = temp ; } (*antalPek) += extra ; return; } Ur main()

  7. Bitfältexempel Ur main() void Kontroll( studentDataTyp pVektor[], int antal ){ int i ; for ( i=1 ; i <= antal ; i++ ) { printf("\nStudent nr%d, kontroll :", i); printf("\n========================\n"); printf("Född år, : %d \n", pVektor[i-1].ar); printf(" månad, : %d \n", pVektor[i-1].manad); printf(" dag, : %d \n", pVektor[i-1].dag); printf("konrollnummer: %d \n", pVektor[i-1].kontroll); printf("TEN1 betyg : %d \n", pVektor[i-1].ten1); printf("TEN2 betyg : %d \n", pVektor[i-1].ten2); printf("LAB betyg : %d \n", pVektor[i-1].lab); printf("PROJ betyg : %d \n", pVektor[i-1].proj); } return; }

  8. Bitfältexempel Ur main() void StangFil( FILE* filPek, studentDataTyp pVektor[], int antal ){ rewind( filPek ); fwrite( pVektor, antal*sizeof( studentDataTyp ),1,filPek ); fclose( filPek ); return; }

  9. Parameterlistan på webtentan Tag reda på …  Vilka datatyper anropas funktionen med?  Vilken datatyp returneras? Belöningen: När Du avslöjat alla parametrar kan Du kompilera projektet och se programmet köra!

  10. Hjälpmedel för att läsa binärfilerprogrammet hexdump.c /* hexdump.c */#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){char filnamn[25];unsigned int i=0;unsigned char c; FILE *inFil; printf("Vilken bin\204rfil ska HEX-dumpas?\n"); scanf("%s", filnamn); inFil = fopen( filnamn, "rb"); printf("\n");while ( fread( &c, sizeof( char ), 1 , inFil )== 1 ) { printf("%02X ", c ) ; /* 2-siffrigt hextal *//* ny rad efter var fjärde byte */ if(++i%4==0)printf("\n"); } fclose( inFil ); printf("\n"); system("PAUSE");return 0 ;} Enklast är att placera programmet hexdump.exe i mappen där din binärfil ligger. Kontrollera innehållet i en binärfil? Varje Byte blir två hex-bokstäver, och fyra sådana hexpar på en rad motsvarar en int eller float.

  11. Laborationsuppgift Laborationsuppgift Lab 4 ( Laborationsuppgift av Kenneth Börgesson ) Del 1 Att under två laborationspass göra ett program som från tangentbordet läser in godtyckligt antal komplexa tal och lagrar dem i en ny fil som antingen är en textfil eller en binärfil. Programmet ska fråga om man önskar textfil eller binärfil. Innan programmet avslutas ska det öppna den nyskapade filen och skriva ut innehållet på skärmen ( som verifikation på inmatningen ). Del 2 Gör ett tillägg till programmet så att det, för en av filtyperna, även går att lägga till eller ta bort ett värde ( ett komplext tal, ett talpar ) till en befintlig fil. Det spelar ingen roll i vilken ordning talen i filen hamnar. Enklast är om det är sista talet som kan tas bort. Lite mer komplicerat är det om det är det n:e talet som ska kunna tas bort. Välj själv ... Gör ett JSP-diagram över ditt program. ( Om strukturen från de tidigare laborationerna kan bibehållas så har Du redan JSP-diagrammet! )

More Related