Minggu, 17 Juli 2022

Text File | Binary File I/O | Bahasa C

Pendahuluan

Bahasa C bisa membuka membaca dan menulis file. Katakunci FILE digunakan untuk pointer. Dalam bekerja file bisa menggunakan katakunci fopen("namafile","mode") untuk memulai membuka atau dan membaca atau dan menulis file atau fclose() untuk menuntup file tersebut. Kita akan menggunakan fprintf(), fscanf(), fread(), fwrite(), fseek() dan lainya untuk memudahkan dalam pengguanaanya dalam project yang digunakan.



Tipe File

Tipe file yang digunakan untuk data yakni 2 file file text yang biasanya berekstensi .txt dan file binari yang berextensi .bin atau bisa juga .dat File text mudah dibaca sedangkan file binari susah dibaca karena berisi data biner yah 0 dan 1. File binari bagus digunakan untuk data yang besar dan keamanan yang bagus dibanding file text yang mudah dibaca.


Pilihan mode pada fopen yakni

r      membuka file untuk membaca tetapi file tersebut harus ada

w      membuka file untuk menulis tidak perlu file ada atau tidak

a      membuka untuk menambahkan data di akhirnya tidak perlu file ada atau tidak

r+     membuka file untuk membaca dan menulis dari pertamanya file yang akan dibuka harus ada

w+     membuka file untuk membaca dan menulis dengan menuliskan ulang isi file tersebut

a+     membuka untuk membaca dan menulis file dengan menambahkan datanya pada bagian akhirnya.

rb      membuka file binari untuk membaca tetapi file tersebut harus ada

wb      membuka file binari untuk menulis tidak perlu filenya ada atau tidak

ab      membuka untuk menambahkan data di akhirnya tidak perlu file binari ada atau tidak

rb+     membuka file binari untuk membaca dan menulis dari pertamanya file yang akan dibuka harus ada

wb+     membuka file binari untuk membaca dan menulis dengan menuliskan ulang isi file tersebut

ab+     membuka untuk membaca dan menulis file binari dengan menambahkan datanya pada bagian akhirnya.

Tulis File Text

Dibawah ini merupakan file tulistext.c yang akan menulis isi dari file program.txt yang (akan) berada dalam satu file yang sama dengan file tulistext.c. Untuk menambahkan isi file kamu bisa mengganti dengan mode a. Lihatlah apa yang ada di file program.txt, ya benar semua kata yang telah dimasukan.


#include <stdio.h>

int main()

{

   char kata[1000];

   FILE *fptr;


   fptr = fopen("program.txt","w");


   if(fptr == NULL)

   {

      printf("Error!");

   }


   printf("Masukan kata Disini: ");

   scanf("%s",kata);


   fprintf(fptr,"%s",kata);

   fclose(fptr);


   return 0;

}

Baca File Text

Kita akan membuat bacatext.c untuk membaca file program.txt pada folder yang sama dengan file bacatext.c. Isi file bacatext.c yakni

#include <stdio.h>


int main()

{

   int num;

   FILE *fptr;


   if ((fptr = fopen("program.txt","r")) == NULL){

       printf("Error! opening file");


       // Program exits if the file pointer returns NULL.

   }


   fscanf(fptr,"%d", &num);


   printf("Value of n=%d", num);

   fclose(fptr); 

  

   return 0;

}


Tulis File Binari

Dalam penulisan file binari ini saya menggunakan struktur dan fungsi fwrite(). Untuk formatnya yakni fwrite(alamatData, ukuranData, angka2Data, pointerFile);. Saya membuat file tulisbinari.c dengan isi:

#include <stdio.h>

typedef struct {

  int id;

  char name[20];

} item;



int main() {

  FILE *fptr;

  item first, second, secondf;

  

  //buat data2 untuk dimasukan ke dalam file

  first.id = 10276;

  strcpy(first.name, "Widget");

  second.id = 11786;

  strcpy(second.name, "Gadget");

  

  /* write records to a file */

  fptr = fopen("info.bin", "wb");

  fwrite(&first, 1, sizeof(first), fptr);

  fwrite(&second, 1, sizeof(second), fptr);

  fclose(fptr);

  

  return 0;

}


Baca File Binari

Mari kita baca file binari dengan fungsi fread(). Format umumnya yakni fread(alamatData, ukuranData, angka2Data, pointerFile);. Contoh penggunaanya yakni:

#include <stdio.h>

struct item{

  int id;

  char name[20];

} item;


int main() {

  FILE *fptr;

  struct item info;

  int n;


  /* read array from file */

  fptr = fopen("info.bin", "rb");

  for(n = 1; n < sizeof(struct item)/12+1; ++n){ // 12 didapat dari jumlah ukuran data perbaris yakni int = 4 dan char = 8

  fread(&info, sizeof(struct item), 1, fptr); 

  printf("%d \t id %d \t nama %s \n", n, info.id, info.name);

  }

  fclose(fptr);

  return 0;

}

Binari Input Output File Bahasa C

Cari Data File Binari

Berikut ini merupakan penggunaan fungsi fseek() yang memiliki format umum fseek(FILE * stream, long int offset, int whence);. Dibawah ini merupakan penggunaan dalam mencari data yang ada pada file binari dengan mengurutkan terbalik.

#include <stdio.h>


typedef struct {

  int id;

  char name[20];

} item;


int main() { 

  FILE *fptr;

  item cari;

  fptr = fopen("info.bin", "rb");


  //cari data ke-1 dimulai dari index 0

  fseek(fptr, 0*sizeof(item), SEEK_SET);

  fread(&cari, 1, sizeof(item), fptr);

  printf("%d  %s\n", cari.id, cari.name);

  fclose(fptr);

  return 0;

}

File Input Output Bahasa C

Untuk Catatan lebih lanjut tentang fseek yakni:

SEEK_SET    Memulai dari depan file.

SEEK_END    Memulai dari belakang file.

SEEK_CUR    Memulai dari lokasi kursor berada di dalam file.

Semoga bermanfaat dan salam sukses

Tidak ada komentar:

Posting Komentar