Operasi FILE dalam Bahasa C

Mahir Koding – Penggunaan operasi FILE dalam sebuah program sangat dibutuhkan dalam pembuatan program yang sesungguhnya. Kita membutuhkan file sebagai tempat penampung data-data selama operasi program. Jika kamu menggunakan variabel biasa, data yang biasanya diolah program hanya akan tersimpan sementara dalam memory dan akan hilang ketika program close. Berbeda dengan memory, penyimpanan data berbasis file akan tersimpan terus walaupun program telah diclose maupun komputer telah di shutdown.

Pada dasarnya, operasi file terbagi 3 jenis. Read (R), Write(W), dan Append(A). Read artinya membaca isi file, write menulis data ke file dan append menambahkan data ke baris terakhir dalam file.

Struktur Dasar

int main(){
	FILE *in=fopen(namafile,mode); 
	fclose(in);
	getchar();
        return 0;
}
  • FILE *in=fopen(namafile, mode); Langkah pertama kita wajib membuka file terlebih dahulu dengan perintah fopen. Fungsi fopen diikuti dengan 2 variabel diantaranya namafile dan mode. Nama file bebas kamu tentukan sendiri.
  • Setelah dibuka, file tersebut wajib kita close dengan perintah fclose(namavariabel). Karena diawal kita membuka file lalu menyimpannya dalam variabel pointer “in”, maka diakhir program juga wajib menutup file dengan fopen(in);
Parameter Mode Arti
r Membuka file sesuai namafilenya untuk dibaca, jika file tidak ada maka akan bernilai NULL.
w Membuka file untuk ditulis, jika sebelumnya sudah ada nama file yang sama, maka akan dilakukan overwrite/menimpa file dengan yang baru.
a Membuka file sesuai namafilenya untuk ditambahkan datanya dipaling bawah baris terakhir. Jika file tidak ada, maka akan membuat file baru secara otomatis.
r+ Sama dengan “r” tetapi selain file dapat dibaca juga dapat di tulis
w+ Sama dengan “w” tetapi selain file dapat ditulis juga dapat dibaca
a+ Sama dengan ”a” tetapi selain file dapat ditulis file juga dapat dibaca

A. Read File

Sesuai namanya, disini kita akan membuka file sesuai namanya lalu membaca isi filenya. Untuk membaca isi file lalu menyimpannya ke dalam variabel, bisa mengan menggunakan fscanf(namavariabelfile, format);

Contoh  Isi file test.txt (letakkan di folder yang sama dengan file .cpp/.c) :

Mahir Koding#22
Hery Vandoro#21
Belajar C#24
int main(){
        char nama[100];
        int umur;
	FILE *in=fopen("test.txt","r");
        while(!feof(in)){
           fscanf(in,"%[^#]#%d\n", &nama, &umur);fflush(stdin);   
           // %[^#] artinya kita menyimpan bagian dari string dalam file sampai tanda #. 
           // Kita tidak menggunnakan %s karena nama mengandung spasi
           printf("%s %d\n", nama, umur);
        }
	fclose(in);
	getchar();
        return 0;
}

Bagaimana kalau seandainya file dengan nama test.txt tidak ada? 

int main(){
	char nama[100];
        int umur;
        FILE *in=fopen("text.txt","r");
        if(!in){  //cek apakah filenya ada atau tidak
           printf("tidak ada file");
        }else{
           while(!feof(in)){
              fscanf(in,"%[^#]#%d\n", &nama, &umur);fflush(stdin);
              printf("%s %d\n", nama, umur);
           }
           fclose(in);
        }     
        getchar();
        return 0;
}

Jika menggunakan mode read, pastikan tidak melakukan fclose terhadap file yang tidak ada. Karena itu akan mengakibatkan error.

B. Write File

Write file artinya kita membuka file dalam mode write (siap untuk ditulis). Dengan menggunakan format yang sama dengan diatas, kita akan mencoba membuat file baru dengan isi NAMA#UMUR. Menyimpan data ke file bisa menggunakan perintah fprintf(namavariabelfile, format);

int main(){
	char nama[100];
	int umur;
	printf("Masukkan nama : "); scanf("%[^\n]", &nama); fflush(stdin);
	printf("Masukkan umur : "); scanf("%d", &umur); fflush(stdin);

	FILE *out=fopen("test.txt","w");
	fprintf(out,"%s#%d\n",nama, umur);
	fclose(out);
	printf("Sukses menambah data.");
	getchar();
        return 0;
}

Script diatas jika dijakankan maka akan membuat file baru jika sudah ada datanya (overwrite). Lalu, hasil inputan nama dan umur akan disimpan dalam file test.txt dengan format NAMA#UMUR

C. Append File

Append artinya menambahkan data pada file baris terakhir. Jika belum ada data/filenya, maka append akan membuatkan file baru. Contoh :

int main(){
	char nama[100];
	int umur;
	printf("Masukkan nama : "); scanf("%[^\n]", &nama); fflush(stdin);
	printf("Masukkan umur : "); scanf("%d", &umur); fflush(stdin);

	FILE *out=fopen("test.txt","a");
	fprintf(out,"%s#%d\n",nama, umur);
	fclose(out);
	printf("Sukses menambah data.");
	getchar();
        return 0;
}

Lalu apa perbedaannya Write dengan Append? Bukannya sama-sama mengisi data ke file? Jawabannya sudah dijelaskan diatas, bahwa write akan selalu membuat file baru untuk mengoverwrite file nama. Append, akan menambahkan data ke baris paling terakhir jika ada file yang dituju. Jika tidak, maka akan membuat file baru.

Jika ada pertanyaan yang kurang jelas silahkan berkomentar di bawah. Atau, jika ingin request tutorial juga dapat ke halaman ini. Dukung terus Mahir Koding agar dapat selalu mengupdate artikel dengan share dan like artikel ini. Terima Kasih.