C File I/O: Membuat, Membuka, Membaca, Menulis dan Menutup File

⚡ Ringkasan Cerdas

Penanganan berkas dalam bahasa C menyimpan data persisten pada disk melalui pustaka stdio, yang membuka berkas dengan fopen, menulis dengan fputc, fputs, atau fprintf, membaca dengan fgetc, fgets, atau fscanf, dan menutupnya menggunakan fclose.

  • 📁 Mode file: String mode yang diteruskan ke fopen — r, w, a, r+, w+, atau a+ — menentukan apakah sebuah file dibaca, ditimpa, atau ditambahkan.
  • Menulis data: fputc menulis satu karakter, fputs menulis sebuah string, dan fprintf menulis teks yang diformat ke penunjuk file.
  • ???? Membaca data: fgetc membaca sebuah karakter, fgets membaca sebuah baris ke dalam buffer, dan fscanf mengurai token yang diformat dari file.
  • 🔒 Menutup berkas: fclose membersihkan data yang di-buffer dan melepaskan file, mengembalikan 0 jika berhasil dan EOF jika gagal.
  • 🔁 Input/Output Interaktif: Fungsi getc dan putc menangani satu karakter dalam satu waktu, memindahkan input langsung ke dalam file dan mengeluarkannya kembali.
  • 🤖 Bantuan AI: GitHub Copilot dan asisten AI menyusun kerangka kerja untuk rutin fopen, fprintf, dan fgets serta menandai pemeriksaan NULL yang hilang atau file yang belum ditutup.

C File I/O

C Manajemen file

Sebuah berkas dapat digunakan untuk menyimpan sejumlah besar data permanen. Seperti banyak bahasa pemrograman lainnya, 'C' menyediakan manajemen berkas sebagai berikut. fungsi,

  1. Pembuatan file
  2. Membuka file
  3. Membaca file
  4. Menulis ke file
  5. Menutup file

Berikut ini adalah fungsi manajemen file paling penting yang tersedia di 'C,'

fungsi tujuan
buka () Membuat file atau membuka file yang sudah ada
tutup() Menutup file
fprintf() Menulis blok data ke file
fscanf() Membaca data blok dari file
dapatkan () Membaca satu karakter dari sebuah file
putc() Menulis satu karakter ke file
dapatkan () Membaca bilangan bulat dari suatu file
putw () Menulis bilangan bulat ke file
mencari () Mengatur posisi penunjuk file ke lokasi tertentu
katakan () Mengembalikan posisi penunjuk file saat ini
memutar ulang () Mengatur penunjuk file di awal file

Cara Membuat File

Kapan pun Anda ingin bekerja dengan suatu file, langkah pertama adalah membuat file. File tidak lain hanyalah ruang di memori tempat data disimpan.

Untuk membuat file dalam program 'C' sintaks berikut digunakan,

FILE *fp;
fp = fopen ("file_name", "mode");

Dalam sintaks di atas, file adalah struktur data yang didefinisikan di perpustakaan standar.

fopen adalah fungsi standar yang digunakan untuk membuka file.

  • Jika file tidak ada di sistem, maka file tersebut dibuat dan kemudian dibuka.
  • Jika sebuah file sudah ada di sistem, maka file tersebut akan langsung dibuka menggunakan fungsi ini.

fp adalah sebuah file petunjuk yang mengarah ke file tipe.

Setiap kali Anda membuka atau membuat berkas, Anda harus menentukan apa yang akan Anda lakukan dengan berkas tersebut. Berkas dalam pemrograman 'C' dapat dibuat atau dibuka untuk tujuan membaca/menulis. Mode digunakan untuk menentukan apakah Anda ingin membuka berkas untuk salah satu tujuan yang diberikan di bawah ini. Berikut ini adalah berbagai jenis mode dalam pemrograman 'C' yang dapat digunakan saat bekerja dengan berkas.

Modus Berkas Deskripsi
r Buka file untuk dibaca. Jika file berada dalam mode baca, maka tidak ada data yang dihapus jika file sudah ada di sistem.
w Buka file untuk ditulis. Jika suatu file dalam mode penulisan, maka file baru akan dibuat jika file tidak ada sama sekali. Jika suatu file sudah ada di sistem, maka semua data di dalam file tersebut terpotong, dan dibuka untuk tujuan penulisan.
a Buka file dalam mode penambahan (append mode). Jika sebuah file berada dalam mode penambahan, maka file tersebut akan dibuka. Isi di dalam file tidak akan berubah.
r+ terbuka untuk membaca dan menulis dari awal
w+ terbuka untuk membaca dan menulis, menimpa file
a+ terbuka untuk membaca dan menulis, menambahkan ke file

Dalam sintaks yang diberikan, nama file dan mode ditentukan sebagai string Oleh karena itu, kalimat tersebut harus selalu diapit dalam tanda kutip ganda.

Sebagai contoh:

#include <stdio.h>
int main() {
FILE *fp;
fp  = fopen ("data.txt", "w");
}

Keluaran:

File dibuat di folder yang sama tempat Anda menyimpan kode.

Buat file di output program C.

Anda dapat menentukan jalur tempat Anda ingin membuat file

#include <stdio.h>
int main() {
FILE *fp;
fp  = fopen ("D://data.txt", "w");
}

Buat file dengan jalur tertentu di C.

Cara Menutup file

Seseorang harus selalu menutup file setiap kali operasi pada file selesai. Ini berarti konten dan tautan ke file tersebut dihentikan. Ini mencegah kerusakan yang tidak disengaja pada file.

'C' menyediakan fungsi fclose untuk melakukan operasi penutupan file. Sintaks fclose adalah sebagai berikut,

fclose (file_pointer);

Sebagai contoh:

FILE *fp;
fp  = fopen ("data.txt", "r");
fclose (fp);

Fungsi fclose menerima penunjuk file sebagai argumen. File yang terkait dengan penunjuk file tersebut kemudian ditutup dengan bantuan fungsi fclose. Fungsi ini mengembalikan 0 jika penutupan berhasil dan EOF (end of file) jika terjadi kesalahan saat menutup file.

Setelah menutup file, penunjuk file yang sama juga dapat digunakan dengan file lain.

Dalam pemrograman 'C', file secara otomatis ditutup ketika program dihentikan. Menutup file secara manual dengan menulis fungsi fclose adalah praktik pemrograman yang baik.

Menulis ke File

Di C, saat Anda menulis ke file, karakter baris baru '\n' harus ditambahkan secara eksplisit.

Perpustakaan stdio menawarkan fungsi yang diperlukan untuk menulis ke file:

  • fputc(char, file_pointer): Fungsi ini menulis karakter ke dalam berkas yang ditunjuk oleh file_pointer.
  • fputs(str, file_pointer): Fungsi ini menulis string ke file yang ditunjuk oleh file_pointer.
  • fprintf(file_pointer, str, variable_lists): Fungsi ini mencetak string ke file yang ditunjuk oleh file_pointer. String tersebut secara opsional dapat menyertakan penentu format dan daftar variabel variable_lists.

Program di bawah ini menunjukkan cara melakukan penulisan ke file:

fputc() Fungsi:

#include <stdio.h>
int main() {
        int i;
        FILE * fptr;
        char fn[50];
        char str[] = "Guru99 Rocks\n";
        fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"
        for (i = 0; str[i] != '\n'; i++) {
            /* write to file using fputc() function */
            fputc(str[i], fptr);
        }
        fclose(fptr);
        return 0;
    }

Keluaran:

Output fungsi fputc() dalam bahasa C

Program di atas menulis satu karakter ke dalam file fputc_test.txt hingga mencapai simbol baris berikutnya "\n" yang menunjukkan bahwa kalimat tersebut berhasil ditulis. Prosesnya adalah mengambil setiap karakter dari array dan menuliskannya ke dalam file.

Isi file fputc_test.txt ditulis dalam bahasa C.

  1. Pada program di atas, kita telah membuat dan membuka file bernama fputc_test.txt dalam mode tulis dan mendeklarasikan string kita yang akan ditulis ke dalam file tersebut.
  2. Kita melakukan operasi penulisan karakter demi karakter menggunakan for loop dan memasukkan setiap karakter ke dalam file kita hingga karakter “\n” ditemukan kemudian file ditutup menggunakan fungsi fclose.

fput () Fungsi:

#include <stdio.h>
int main() {
        FILE * fp;
        fp = fopen("fputs_test.txt", "w+");
        fputs("This is Guru99 Tutorial on fputs,", fp);
        fputs("We don't need to use for loop\n", fp);
        fputs("Easier than fputc function\n", fp);
        fclose(fp);
        return (0);
    }

Keluaran:

output fungsi fputs() dalam bahasa C

Isi file fputs_test.txt dalam bahasa C

  1. Pada program di atas, kami telah membuat dan membuka file bernama fputs_test.txt dalam mode tulis.
  2. Setelah kita melakukan operasi penulisan menggunakan fungsi fputs() dengan menulis tiga string yang berbeda
  3. Kemudian file ditutup menggunakan fungsi fclose.

fprintf()Fungsi:

#include <stdio.h>
    int main() {
        FILE *fptr;
        fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"
        /* write to file */
        fprintf(fptr, "Learning C with Guru99\n");
        fclose(fptr);
        return 0;
    }

Keluaran:

Output fungsi fprintf() dalam bahasa C

Isi file fprintf_test.txt dalam bahasa C

  1. Pada program di atas kita telah membuat dan membuka file bernama fprintf_test.txt dalam mode tulis.
  2. Setelah dilakukan operasi tulis menggunakan fungsi fprintf() dengan menulis string, kemudian file ditutup menggunakan fungsi fclose.

Membaca data dari File

Ada tiga fungsi berbeda yang didedikasikan untuk membaca data dari file

  • fgetc(file_pointer): Fungsi ini mengembalikan karakter berikutnya dari file yang ditunjuk oleh penunjuk file. Ketika akhir file telah tercapai, EOF (End of File) dikirim kembali.
  • fgets(buffer, n, file_pointer): Fungsi ini membaca n-1 karakter dari file dan menyimpan string tersebut ke dalam buffer di mana karakter NULL '\0' ditambahkan sebagai karakter terakhir.
  • fscanf(file_pointer, conversion_specifiers, variable_adresses): Digunakan untuk mengurai dan menganalisis data. Ia membaca karakter dari file dan menetapkan input ke daftar penunjuk variabel variable_adresses menggunakan penentu konversi. Perlu diingat bahwa seperti halnya scanf, fscanf berhenti membaca string ketika spasi atau baris baru ditemui.

Program berikut menunjukkan pembacaan dari file fputs_test.txt menggunakan fungsi fgets(),fscanf() dan fgetc() berturut-turut:

#include <stdio.h>
int main() {
        FILE * file_pointer;
        char buffer[30], c;

        file_pointer = fopen("fprintf_test.txt", "r");
        printf("----read a line----\n");
        fgets(buffer, 50, file_pointer);
        printf("%s\n", buffer);

        printf("----read and parse data----\n");
        file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer
        char str1[10], str2[2], str3[20], str4[2];
        fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);
        printf("Read String1 |%s|\n", str1);
        printf("Read String2 |%s|\n", str2);
        printf("Read String3 |%s|\n", str3);
        printf("Read String4 |%s|\n", str4);

        printf("----read the entire file----\n");

        file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointer
        while ((c = getc(file_pointer)) != EOF) printf("%c", c);

        fclose(file_pointer);
        return 0;
    }

Hasil:

----read a line----
Learning C with Guru99

----read and parse data----
Read String1 |Learning|
Read String2 |C|
Read String3 |with|
Read String4 |Guru99|
----read the entire file----
Learning C with Guru99

Membaca data dari sebuah file dalam output C.

  1. Dalam program di atas, kita telah membuka file bernama “fprintf_test.txt” yang sebelumnya ditulis menggunakan fungsi fprintf(), dan berisi “Learning C with GuruString "99". Kami membacanya menggunakan fungsi fgets() yang membaca baris demi baris di mana ukuran buffer harus cukup untuk menangani seluruh baris.
  2. Kita membuka kembali file untuk mengatur ulang penunjuk file agar menunjuk ke awal file. Buat berbagai variabel string untuk menangani setiap kata secara terpisah. Cetak variabel untuk melihat isinya. Fungsi fscanf() terutama digunakan untuk mengekstraktract dan mengurai data dari sebuah file.
  3. Buka kembali file untuk mengatur ulang file penunjuk agar menunjuk ke awal file. Baca data dan cetak dari file karakter demi karakter menggunakan fungsi getc() hingga pernyataan EOF ditemukan
  4. Setelah melakukan operasi pembacaan file menggunakan varian yang berbeda, kami menutup kembali file tersebut menggunakan fungsi fclose.

File Interaktif Baca dan Tulis dengan getc dan putc

Ini adalah operasi file paling sederhana. Getc adalah singkatan dari get character, dan putc adalah singkatan dari put character. Kedua fungsi ini digunakan untuk menangani hanya satu karakter dalam satu waktu.

Program berikut menunjukkan fungsi penanganan berkas dalam pemrograman 'C':

#include <stdio.h>
int main() {
        FILE * fp;
        char c;
        printf("File Handling\n");
        //open a file
        fp = fopen("demo.txt", "w");
        //writing operation
        while ((c = getchar()) != EOF) {
            putc(c, fp);
        }
        //close file
        fclose(fp);
        printf("Data Entered:\n");
        //reading
        fp = fopen("demo.txt", "r");
        while ((c = getc(fp)) != EOF) {
            printf("%c", c);
        }
        fclose(fp);
        return 0;
    }

Keluaran:

Pembacaan dan penulisan file interaktif dalam output C.

getc dan putc menangani output file dalam bahasa C.

  1. Dalam program di atas kita telah membuat dan membuka file bernama demo dalam mode tulis.
  2. Setelah dilakukan operasi tulis, selanjutnya file ditutup menggunakan fungsi fclose.
  3. Kami kembali membuka file yang sekarang berisi data dalam mode membaca. Perulangan while akan dijalankan hingga eof ditemukan. Setelah akhir file ditemukan, operasi akan dihentikan dan data akan ditampilkan menggunakan fungsi printf.
  4. Setelah melakukan operasi pembacaan, file ditutup kembali menggunakan fungsi fclose.

Pertanyaan Umum Demo Slot

Mode teks menerjemahkan karakter baris baru agar sesuai dengan sistem operasi, sedangkan mode biner, yang dibuka dengan "rb" atau "wb", menulis byte persis seperti aslinya. Gunakan mode biner untuk gambar, audio, atau data apa pun di mana tata letak byte yang tepat harus dipertahankan.

Fungsi fopen mengembalikan NULL ketika sebuah file tidak dapat dibuka, misalnya karena file hilang, izin ditolak, atau disk penuh. Selalu uji pointer yang dikembalikan terhadap NULL sebelum membaca atau menulis, jika tidak, program akan menggunakan pointer yang tidak valid dan biasanya akan mengalami crash.

Mode tulis “w” memotong file yang sudah ada, menghapus isinya sebelum menulis, dan membuat file baru jika belum ada. Mode tambah “a” mempertahankan data yang sudah ada dan menambahkan konten baru di akhir, sehingga tidak ada data yang sudah tersimpan yang hilang.

fseek memindahkan penunjuk file ke offset byte yang diukur dari SEEK_SET, SEEK_CUR, atau SEEK_END. ftell mengembalikan posisi byte saat ini dari penunjuk, dan rewind mengirimkannya kembali ke awal file. Bersama-sama, keduanya memberikan akses acak alih-alih pembacaan berurutan.

fgets membaca seluruh baris, berhentiping pada baris baru atau setelah n-1 karakter, sehingga memperhatikan ukuran buffer. fscanf membaca token yang diformat dan dipisahkan spasi dan dapat menyebabkan luapan pada array pendek. Untuk membaca seluruh baris dengan aman, fgets adalah pilihan yang lebih baik.

EOF adalah konstanta, biasanya -1, yang menandai akhir sebuah file. Fungsi pembacaan seperti getc, fgetc, dan fscanf mengembalikan EOF setelah tidak ada lagi data yang tersisa, itulah sebabnya loop membandingkan hasilnya dengan EOF untuk menghentikan pembacaan.

Ya. Asisten pengkodean AI dapat menghasilkan rutin fopen, fprintf, dan fgets dari perintah bahasa biasa, menjelaskan setiap mode file, dan mendeteksi bug seperti kurangnya pengecekan NULL atau file yang belum ditutup. Selalu kompilasi dan uji kode yang disarankan AI sebelum mempercayainya.

Kopilot GitHub Program ini menulis kode penanganan file C, menyarankan blok fopen, fputs, dan fscanf lengkap dari komentar singkat atau nama fungsi. Program ini sering menambahkan panggilan fclose yang sesuai dan pemeriksaan kesalahan, meskipun Anda tetap harus meninjau logika yang dihasilkan.

Ringkaslah postingan ini dengan: