KTLT Struct File

download KTLT Struct File

of 19

Transcript of KTLT Struct File

  • 8/3/2019 KTLT Struct File

    1/19

    Struct & File

  • 8/3/2019 KTLT Struct File

    2/19

    Struct & File

    Struct Kiu d liu t nh ngha c cu tr To v s dng struct Khai bo v truyn tham s kiu struct cho hm

    Truyn gi tr Truyn tham chiu

    File Tp tin To, c, ghi, v cp nht file Truy xut file tun t Truy xut file ngu nhin

  • 8/3/2019 KTLT Struct File

    3/19

    Struct

    L mt kiu d liu: Tp hp nhiu thnh phn c lin quan v nghvi nhau Cc thnh phn c th thuc nhiu kiu c s khnhau

    typedef struct SinhVien{char HoTen[60] ;int Tuoi ;float DiemTB ;

    };

    T kha ch nh y l kiu struct

    Tn ca kiu struct v dng khai bo bi

    Kiu SinhVien c 3thnh phn d liu

  • 8/3/2019 KTLT Struct File

    4/19

    Struct

    nh ngha kiu struct Khng th cha mt thnh phn d liu l chnh C th cha mt thnh phn d liu l con tr trchnh kiu struct ny Mt nh ngha struct khng thc s chim gi bnh

    Khai bo bin thuc kiu struct SinhVien sv, a, b, *ptrSV;SinhVien DanhSachSV[100];

  • 8/3/2019 KTLT Struct File

    5/19

    Struct

    Cc ton t hp l Php gn

    SinhVien a, b, dssv[100];a = b; dssv[50] = a;

    Ton t ly a ch (&)

    Truy xut cc thnh phn d liu (., -> )a.Tuoi = 20; dssv[20] .DiemTB = 10.0;

    Ton t sizeof dng ly kch thc thc tnh theo

    byte ca kiu struct

  • 8/3/2019 KTLT Struct File

    6/19

    Struct#include #include typedef struct SinhVien {

    char HoTen[60];int Tuoi;float DiemTB;

    };int main(){

    SinhVien dssv[10];int n; float t;printf( S lng sinh vin: );scanf( %d, &n);

    for (int i=0; i

  • 8/3/2019 KTLT Struct File

    7/19

    Struct

    Truyn tham s cho hm Truyn ton b bin kiu struct Ch truyn mt / nhiu thnh phn d liu (.) Truyn theo gi tr Truyn theo tham chiu

    void NhapSV(SinhVien &sv);void XuatSV(SinhVien sv);void DauRot(float diem);

  • 8/3/2019 KTLT Struct File

    8/19

    Struct#include #include typedef struct SinhVien {

    char HoTen[60];int Tuoi;

    float DiemTB;};void NhapSV(SinhVien &sv);void XuatSV(SinhVien sv);void DauRot(float diem);int main(){

    SinhVien dssv[10];int n; float t;

    printf( S lng sinh vin: );

    scanf( %d, &n);for (int i=0; i

  • 8/3/2019 KTLT Struct File

    9/19

    Structvoid NhapSV(SinhVien &sv){

    printf( H tn: ); scanf( %s, dssv[i].HoTen);printf( Tuoi: ); scanf( %d, &dssv[i].Tuoi);printf( Diem TB: ); scanf( %f, &t); dssv[i].DiemTB = t;

    }

    void XuatSV(SinhVien sv){

    printf( H tn: %s \ n, dssv[i].HoTen);printf( Tuoi: %d \ n, dssv[i].Tuoi);

    printf( Diem TB: %f \ n, dssv[i].DiemTB);}void DauRot(float diem){

    if (diem>=5) printf(==> U \ n);else printf(==> RT \ n); }

  • 8/3/2019 KTLT Struct File

    10/19

    File

    Dng lu tr bn vng nhng d liu trongchng trnh

    D liu lu tr trong bin lun ch l tm thi L mt dy tun t cc byte d liu Kt thc bng mt k t c bit (^Z)

    C qun l file m bng mt bin kiu FIL stdinstdoutstderr

  • 8/3/2019 KTLT Struct File

    11/19

    File - M / ng file fopen : M file c / to file mi

    FILE* fopen(const char* filename,const char* mode);

    FILE* f = fopen(thotinh.txt,rt); fclose : ng file m

    int fclose(FILE* f);fclose(f)

    feof : Kim tra cui file ? int feof (FILE* f);

    if ( feof (f) )

    Mode ngha r M file ch c.

    w To file mi ghi. Nu file c, nidung ca n s b xa b.

    a Thm vo; m hay to file mi ghi v

    cui file.

    r+ M file cp nht (c v ghi).

    w+ To file mi cp nht. Nu file cni dung ca n s b xa b.

    a+ Thm vo; m hay to file cp nht;thao tc ghi c thc hin cui file.

    rb M file ch c trong ch nh phn wb To file ghi trong ch nh phn. N

    file c, ni dung ca n s b xa b. ab Thm vo; m hay to file mi ghi v

    cui file trong ch nh phn. rb+ M file cp nht (c v ghi) trong ch

    nh phn. wb+ To file mi cp nht trong ch nh

    phn. Nu file c, ni dung ca n s xa b.

    ab+ Thm vo; m hay to file cp nhttrong ch nh phn; thao tc ghi cthc hin cui file.

    Cc ch m file

  • 8/3/2019 KTLT Struct File

    12/19

    Text File

    Cc hm trong th vin chun () fgetc : c 1 k t t file

    int fgetc (FILE* f)int kytu = fgetc (f);

    fputc : Ghi 1 k t vo file int fputc (int c, FILE* f)

    fputc (A, f); fgets : c 1 chui k t (1 dng) t file

    int fgets (char*s, int n, FILE* f)char HoTen[60]; fgets (HoTen, 60, f);

  • 8/3/2019 KTLT Struct File

    13/19

    Text File

    Cc hm trong th vin chun () fputs : Ghi 1 chui k t (1 dng) vo file

    int fputs (char* s, FILE* f)

    fputs (Nguyn Vn A, f); fscanf / fprintf : Tng t nhscanf / printf nhnghot ng trn file

    int fscanf (FILE* f, const char* format [, arglist ] )int fprintf (FILE* f, const char* format [, arglist ] )fscanf(f, %i, &n); fprintf(f, %i + %i = %i, a, b, tong);

  • 8/3/2019 KTLT Struct File

    14/19

    Text File

    3Trn Vn A 23

    8.65Cng Tng Tn N Ngc Din L Th Hng Nga 804.9Trn Trng Trc 199.2

  • 8/3/2019 KTLT Struct File

    15/19

    Text Filevoid GhiSV (FILE* f, SinhVien sv){

    fprintf(f, %s \n%d\n%f\ n,sv.HoTen,sv.Tuoi,

    sv.DiemTB);}

    void DocSV (FILE* f, SinhVien &sv){

    float t;fgets(sv.HoTen, 60, f);fscanf(f, %d, &sv.Tuoi);fscanf(f, %f, &t);sv.DiemTB = t;

    }

    int GhiDSSV (SinhVien dssv[], int n) {FILE* f = fopen( sv.txt, w);if (f==NULL) return 0;fprintf(f, %d \ n, n); for (int i=0; i

  • 8/3/2019 KTLT Struct File

    16/19

    Text Fileint CopyTextFile( char* nguon, char* dich){

    FILE* fnguon = fopen(nguon, r);FILE* fdich = fopen(dich, w);if (fnguon==NULL || fdich==NULL) return 0;

    char kytu;while ( !feof (fnguon) ){

    kytu = fgetc(fnguon);

    fputc(kytu, fdich);}fclose(fnguon); fclose(fdich);return 1;

    }

  • 8/3/2019 KTLT Struct File

    17/19

    Binary File

    3Trn Vn A 23

    8.65Cng Tng Tn N Ngc Din L Th Hng Nga 804.9

    Trn Trng Trc 199.2

    Chiu di c nh:sizeof(SinhVien)

  • 8/3/2019 KTLT Struct File

    18/19

    Binary File

    D liu c lu tr theo dng th (raw),thng khng th c bng mt. Cc hm dng cho binary file:

    int fwrite (void* data, size_t size, int n, FILE* f);int fread (void* data, size_t size, int n, FILE* f);fwrite (&sv, sizeof(sinhvien), 1, f);fread (&sv, sizeof(sinhvien), 1, f);fwrite (dssv, sizeof(sinhvien), n, f);

  • 8/3/2019 KTLT Struct File

    19/19

    File Truy xut ngu nhin fseek: Di con tr c, ghi ca file n v trc th c cung cp

    int fseek(FILE* f, long offset, int start);SEEK_SET: u file SEEK_END: cui file SEEK_CUR: v tr hin ti

    fseek(f, sizeof(sinhvien)*5, SEEK_SET);fseek(f, -sizeof(sinhvien), SEEK_END);fseek(f, sizeof(sinhvien), SEEK_CUR);