1 / 34

OPERASI FILE

OPERASI FILE. Struktur File.

elma
Télécharger la présentation

OPERASI FILE

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. OPERASI FILE

  2. Struktur File File atauberkasmerupakansekumpulan data yang disimpandalameksternalmemori. File terdiridarisejumlah record, sedangkan record terdiridarisejumlah field dan field terdiridarisejumlah byte (8 bit). Sehinggastruktur file dapatdigambarkansbb.: File Record ●●● Record Field Field Field Byte Byte Byte

  3. TahapanOperasi File Tigatahapanoperasi file: • Membuka file • Melakukanprosesmembaca, menulis, menghapus, merubah data dari file • Menutup file

  4. Membuka File • Fungsi yang digunakanadalah: fopen() yang beradadalam file header stdio.h • Deklarasifungsifopen(): FILE *fopen(char *namafile, char *mode); Dimana: • Namafileadalahnama-file (identifier) yang akandibuka • Mode adalahjenisoperasi yang dapatdilakukanthd file

  5. Mode Operasi File Jenis (mode) operasi file

  6. ContohMembuka File FILE *pf; //deklarasivariabel FILE pf pf = fopen(“data.txt”, “w”); //membuat & membuka file “data.txt” //dg mode “w” & pointer FILE ke pf. • Bila file “data.txt” sudahada, maka data sebelumnyadihapus. • Bilatidakberhasilmembuat FILE “data.txt”, makapfbernilai NULL. • Sehinggaumumnyadigunakansbb.: if (pf=fopen(“data.txt”,”w”) == NULL) { puts(“File gagaldibuat.”); exit(1); //keluar program }

  7. Menutup File • Fungsiygdipakaifclose(), dg definisifungsisbb.: intfclose(FILE *pf); • Prototipefungsiberadadi file header stdio.h • Jikaberhasilmenghasilkannilai 0 (nol). • Untukmenutupsemua file dapatdigunakan: intfcloseall(void); • Menghasilkannilai EOF (-1) bilagagal. • Menghasilkanjumlah file ygditutupbilaberhasil.

  8. Menulis data File per Karakter • Fungsi yang digunakanfputc(), terdapatdalam file header stdio.h. • Bentukdeklarasifungsi: intfputc(intkar, FILE *ptr_file); • Bilaberhasil, nilaipengembalianfungsisamadengankar. Bilatidakberhasil, nilaipengembalianfungsiberupa EOF (-1).

  9. ContohMenyimpan data per karakterke File #include<stdio.h> #include<conio.h> #include<stdlib.h> #define CTL_Z 26 int main(){ FILE *pf; char kar; if((pf=fopen("data.txt","w"))==NULL){ puts("Gagalmembuka file.....!!!!\n"); exit(1); } while ((kar=getche()) != CTL_Z) putc(kar,pf); fclose(pf); getch(); return (0); }

  10. Membaca data File per Karakter • Fungsi yang digunakangetc(), terdapatdalam file header stdio.h. • Bentukdeklarasifungsi: intgetc(FILE *ptr_file); • Bilaberhasil, nilaipengembalianfungsiberupanilaiintdarisebuahkarakterygdibacadari file. Bilatidakberhasil, nilaipengembalianfungsiberupa EOF (-1).

  11. ContohMembaca data per karakterdari File #include<stdio.h> #include<conio.h> #include<stdlib.h> int main(){ FILE *pf; char kar; if((pf=fopen("data.txt",“r"))==NULL){ puts("Gagalmembuka file.....!!!!\n"); exit(1); } while ((kar=getc(pf)) != EOF) putch(kar); fclose(pf); getch(); return (0); }

  12. Jenis File DalamBahasaPemrograman C, terdapat 2 macamjenis file, yaitu: File Biner: merupakanpenyimpanan data didalameksternalmemori (disk) berbentukserangkaiankodebiner, sepertibentukpenyimpanandi RAM. Dipakaiuntukmenyimpan data kompleks, mis: struct. File Teks: merupakanpenyimpanan data didalameksternalmemori (disk) berbentukserangkaiankarakter. Dipakaiuntukmenyimpan data sepertikarakteratau string.

  13. Jenis File • Penentuan file mode teksdan mode binerditandaidenganpenggunaansimbol: • t untuk mode teks • b untuk mode biner • Contoh: "rt" : mode file adalahteksdan file hendakdibaca "rt+” : mode file adalahteksdan file bisadibacadanditulisi. Bisajugaditulis : "r+t" "rb" : mode file adalahbinerdan file hendakdibaca.

  14. Jenis File • Penentuan file mode teksdan mode binerdapatdilakukanmelaluivariabel global _fmode,ygterdapatpada file headerfcntl.h • Variabel _fmodedapatdiisiO_BINARYuntuk file biner, atauO_TEXTuntuk file teks. • Contoh: • _fmode = O_BINER; • pf = fopen(“datafile.dat”,”r”);

  15. OPERASI BACA & TULIS FILE PER INT • Perintah yang digunakan : _putw (), _getw(). • Bentukdeklarasi : Kegunaan : _getw()untukmembacasebuah data bertipeintdari file _putw()untukmenyimpansebuah data bertipeintke file. int _putw(intnilai, FILE *ptr_file); int _getw(FILE *ptr_file);

  16. Contoh Program Tulis per int Masukkan banyaknya data : 3 Bilangan yang disimpan : 70 Bilangan yang disimpan : 80 Bilangan yang disimpan : 90 #include <stdio.h> #include <stdlib.h> Int main( ) { FILE *pf; /* ptr-ke-FILE */ intnilai, data, i; char jawab; if((pf=fopen("BILANGAN.DAT", "wb")) == NULL ) { printf("file gagaldiciptakan!\n"); exit(1); } printf ("Masukkanbanyaknya data : "); scanf ("%d",&data); for (i=0;i<data;i++) { printf("\nBilangan yang disimpan: "); scanf("%d", &nilai); /* bacanilaidr keyboard */ _putw(nilai, pf); /* bacabilanganke file */ } printf("\nOke. Data sudahdisimpandalam file.\n"); fclose(pf); /* menutup file */ }

  17. Contoh Program Baca per int Isi file BILANGAN.DAT : 1. 70 2. 80 3. 90 #include <stdio.h> #include <stdlib.h> int main() { FILE *pf; /* ptrke file */ intnilai, nomor = 0; /* Buka file bineruntukdibaca */ if((pf=fopen("BILANGAN.DAT","rb")) == NULL) { printf("File gagaldibuka.\n"); exit(1); } printf("Isi file BILANGAN.DAT : \n"); while(1) { /* file berhasildibuka */ nilai= _getw(pf); /* Baca sebuahintdr file */ if (feof(pf) != 0) break; /*Jikaakhir file, keluar loop*/ printf("%2d. %d \n", ++nomor, nilai); /* Tampilkankelayar */ } fclose(pf); /* Tutup file */ return(0); }

  18. OPERASI BACA & TULIS FILE PER BLOK • Fungsi : untukmenyimpanataumembaca data file dalambentukkesatuanblok (sejumlah byte), misal float ataustruct. • Perintah yang digunakan : fread () danfwrite (); • Bentukdeklarasi : Dimana: buffer : pointer yang menunjukkealamatmemori jum_byte : jumlah byte yang akandibacaataudisimpan n : byknyablok data berukuranjum_byteygakanditulis / dibaca ptr_file: pointer-ke-FILE yang berisinilaikeluarandarifopen(). intfread(void *buffer, int n, FILE *ptr_file); intfwrite(void *buffer, intjum_byte, int n, FILE *ptr_file);

  19. Contoh Program TulisStruktur #include <stdio.h> #include <stdlib.h> Int main() { FILE *f_struktur; char jawaban; intsudah_benar; struct{ char judul[20]; char pengarang[20]; intjumlah; } buku; /* variabelbukubertipestruktur */ if((f_struktur = fopen("DAFBUKU.DAT", "wb")) == NULL) { printf("File tidakdapatdiciptakan !\n"); exit(1); }

  20. Contoh Program Tulis Struktur Lanjutan do {fflush(stdin); /* Hapusisipenampung keyboard */ printf("Judulbuku : "); gets(buku.judul); printf("Namapengarang : "); gets(buku.pengarang); printf("Jumlahbuku : "); scanf("%d", &buku.jumlah); fflush(stdin); /* Hapusisipenampung keyboard */ /* Rekamsebuah data bertipestruktur */ fwrite(&buku, sizeof(buku), 1, f_struktur); printf("\nMaumerekam data lagi [Y/T] ?"); jawaban = getchar(); printf("\n"); } while(jawaban == 'Y' || jawaban == 'y'); fclose(f_struktur); /* Tutup file */ return(0); }

  21. Contoh Program Baca Struktur #include <stdio.h> #include <stdlib.h> int main() { FILE *f_struktur; inti=1; struct{ char judul[20]; char pengarang[20]; intjumlah; } buku; /* variabelbukubertipestruktur */ if((f_struktur = fopen("DAFBUKU.DAT", "rb")) == NULL) { printf("File tidakdapatdibuka !\n"); exit(1); } printf("%2s. %-30s %-30s %s\n\n", "No", "JudulBuku", "NamaPengarang", "Jumlah"); /* diulangselamamasihada record ygterbacadlm file */ while(fread(&buku, sizeof(buku), 1, f_struktur) == 1) printf("%2d. %-30s %-30s %4d\n", i++, buku.judul, buku.pengarang, buku.jumlah); printf("\n"); fclose(f_struktur); /* Tutup file */ return(0); } Ukuran char-nya harus sama dengan yang di program tulis

  22. OPERASI BACA & SIMPAN DATA STRING PADA FILE • Perintah yang digunakan : fgets()danfputs(). • Bentukdeklarasi : Kegunaan: fputs() : menyimpan string strkedalam file. fgets() : membaca string dari file sampaiditemukannyakarakterbaris baru '\n' atausetelah (n-1) karakter, dengan n adalahpanjang maksimal string yang dibaca per waktu-baca. intfputs(char *str, FILE *ptr_file); char fgets(char *str, int n, FILE *ptr_file); Note : • Saatsimpan, fputs()tidakmenambahkankarakterbaris-baru ('\n') dengansendirinya, dankarakter null tidakikutdisimpan. • Baikfgets()maupunfputs()digunakanuntuk file teks.

  23. Contoh Program Tulis-1 #include <stdio.h> #include <stdlib.h> int main( ) { FILE *pf; /* ptr-ke-FILE */ intdata, i; char nama[40]; if((pf=fopen("latihan.txt", "w")) == NULL ) { printf("file gagaldiciptakan!\n"); exit(1); } printf("Masukkanbanyaknya data : "); scanf("%d",&data); for (i=1;i<=data;i++) { printf("\nNamake %d : ",i); fflush(stdin); gets(nama); strcat(nama,”\n”); fputs(nama, pf); } printf("\nOke. Data sudahdisimpandalam file.\n"); fclose(pf); /* menutup file */ return(0); }

  24. Contoh Program Tulis-2 #include <stdio.h> #include <stdlib.h> int main( ) { FILE *pf; /* ptr-ke-FILE */ intdata, i; char nama[40]; if((pf=fopen("latihan.txt", "w")) == NULL ) { printf("file gagaldiciptakan!\n"); exit(1); } printf("\nNamake %d : ",i); fflush(stdin); gets(nama); fputs(nama, pf); printf("\nOke. Data sudahdisimpandalam file.\n"); fclose(pf); /* menutup file */ return(0); }

  25. Contoh Program Baca #include <stdio.h> #include <stdlib.h> int main( ) { FILE *pf; /* ptr-ke-FILE */ intdata, i; char nama[40]; if((pf=fopen("latihan.txt", "r")) == NULL ) { printf("file gagaldibuka!\n"); exit(1); } /*Baca file per string (6 char) sampaiditemui EOF*/ while (fgets(nama,6,pf)) printf("%s\n",nama); fclose(pf); /* menutup file */ return(0); }

  26. Akses File BinersecaraAcak • Tujuan: membaca data ditengah file secaracepat. • Fungsi yang digunakan : fseek (). • Bentukdeklarasi : dengan : ptr_fileadalah pointer yang berasaldarikeluaranfopen() offsetmenyatakanjumlah byte terhadapposisi posisidapatdiisisuatunilai yang terterapadatabel intfseek(FILE *ptr_file, long int offset, intposisi); Prototype : stdio.h

  27. ContohAplikasifseek() • fseek(pf, 3, SEEK_SET); • fseek(pf, 3, SEEK_CURR); • fseek(pf, 3, SEEK_END);

  28. Contoh Program fseek()UntukMencariKarakter #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *pf; char kar,jawab; inti, no_record; long intoffset_byte; if((pf = fopen("latihan.txt", "r")) == NULL) { printf("File tidakdapatdibuka !\n"); exit(1); } do { printf(“\n Nomor record dr data ygmauditampilkan : "); scanf("%d", &no_record); offset_byte= (no_record-1); fseek(pf, offset_byte, SEEK_SET); kar=fgetc(pf); /* bacakardari file */ putchar(kar); /* tampilkankelayar*/ printf("\nMaumencobalagi (Y/T)? "); jawab=getche(); } while (jawab == 'y' || jawab == 'Y'); printf("\n"); fclose(pf); /* Tutup file */ return(0); }

  29. Contoh Program fseek() UntukMencariBilangan #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *pf; char jawab; inti, no_record,nilai; long intoffset_byte; if((pf = fopen("bilangan.dat", "rb")) == NULL) { printf("File tidakdapatdibuka !\n"); exit(1); } do { printf(“\nNomorrecord dr data ygmauditampilkan : "); scanf("%d", &no_record); offset_byte= (no_record-1)*sizeof (int); fseek(pf, offset_byte, SEEK_SET); nilai= _getw(pf); /* Baca sebuahintdr file */ printf("%d \n",nilai); printf("\nMaumencobalagi (Y/T)? "); jawab=getche(); } while (jawab == 'y' || jawab == 'Y'); printf("\n"); fclose(pf); /* Tutup file */ return(0); }

  30. Contoh Program fseek() untukMencari String #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *pf; char jawab,nama[20]; inti, no_record; long intoffset_byte; if((pf = fopen("latihan.txt", "r")) == NULL) { printf("File tidakdapatdibuka !\n"); exit(1); } do { printf("\n Nomor record dr data ygmauditampilkan : "); scanf("%d", &no_record); offset_byte= (no_record-1); fseek(pf, offset_byte, SEEK_SET); printf("%s\n",fgets(nama,20,pf)); printf("\nMaumencobalagi (Y/T)? "); jawab=getche(); } while (jawab == 'y' || jawab == 'Y'); printf("\n"); fclose(pf); /* Tutup file */ return (0); }

  31. MENGHAPUS FILE • Bentukdeklarasi: namafile: pointer yang menunjuknamafile yang dihapus • Jikaoperasihapusberhasil, akanmenghasilkan output = 0. • Prototype : stdio.h int remove (char *namafile);

  32. ContohMenghapus File #include <stdio.h> #include <stdlib.h> #define PJG 65 int main() { intkode; char namafile[PJG]; printf("Nama file yang akandihapus: "); gets(namafile); kode= remove(namafile); if(kode == 0) printf("File berhasildihapus\n"); else printf("Gagalmenghapusfile\n"); return(0); }

  33. MENGGANTI NAMA FILE • Bentukdeklarasi: • Jikaoperasihapusberhasil, akanmenghasilkan output = 0. • Prototype : stdio.h int rename(char *namafilelama, char *namafilebaru);

  34. Contoh Program GantiNama File #include <stdio.h> #include <stdlib.h> #define PJG 65 int main() { intkode; char namafilelama[PJG], namafilebaru[PJG]; printf("Nama file yang akandiganti: "); gets(namafilelama); printf("Nama file yang baru: "); gets(namafilebaru); kode= rename(namafilelama, namafilebaru); if(kode == 0) printf("Nama file sudahberhasildiganti\n"); else printf("Gagalmenggantinama file\n"); return (0); }

More Related