Anda memerlukan pegangan untuk menyentuh data pada disk. Di C, pegangan itu adalah penunjuk yang dikembalikan oleh fopen. Anda menentukan mode, mendapatkan kembali pointer, dan menggunakannya untuk mengalirkan data masuk atau keluar. Mode yang paling umum adalah r untuk membaca, w untuk menulis, dan a untuk menambahkan. Jika salah, Anda mungkin kehilangan data atau membuat program Anda mogok.
Pertimbangkan tugas sederhana: menulis angka 1 hingga 10 ke sebuah file.
Kode ini membuka file bernama out menggunakan mode w. Ini adalah tulisan yang merusak. Jika out tidak ada, sistem akan membuatnya. Jika memang ada, konten lama akan dihapus dan diganti. Variabel f menyimpan penunjuk file. Anda menggunakan penunjuk ini untuk semua operasi selanjutnya. Jika file tidak dapat dibuka—masalah izin, disk penuh, atau jalur tidak ada—f menjadi NULL.
Fungsi keluaran di sini adalah fprintf. Ini berfungsi persis seperti printf, tetapi Anda meneruskan penunjuk file sebagai argumen pertama. Setelah selesai, fclose melepaskan sumber daya.
Menangani Error File di Main
Cuplikan ini adalah yang pertama dalam rangkaian yang mengembalikan kode kesalahan dari main. Ketika fopen gagal, f berisi nilai null. Di C, nol bernilai salah. Segala sesuatu yang lain benar. Operator ! membalikkan logika boolean tersebut.
if (!f) memeriksa apakah penunjuknya nol. Ini setara dengan if (f == 0), tetapi yang pertama adalah idiom standar. Jika kondisinya benar, program akan mengembalikan 1.
Pada sistem UNIX, Anda dapat memeriksa status keluar ini langsung dari baris perintah. Ini memberi tahu Anda apakah skrip atau program berjalan dengan sukses atau menemui jalan buntu. Mengetahui cara mendeteksi kesalahan ini lebih awal akan menghemat waktu proses debug di kemudian hari.
Mengapa kita repot-repot mengembalikan kode padahal kita bisa saja crash? Karena kegagalan yang terkendali lebih baik daripada perilaku yang tidak ditentukan. Anda dapat mencatat kesalahan, memberi tahu pengguna, atau mencoba lagi. Membiarkan program mati secara diam-diam adalah rekayasa yang malas.
Keindahan pendekatan ini terletak pada kesederhanaannya. Anda membuka. Anda memeriksa. Anda menulis. Anda tutup. Tidak ada keajaiban. Tidak ada keadaan tersembunyi. Hanya sebuah pointer dan file.
Namun bagaimana jika Anda perlu membaca apa yang baru saja Anda tulis? Atau menambahkan log yang sudah ada tanpa merusak riwayat? String mode mengubah segalanya. r meninggalkan file itu sendiri. a menambah bagian akhir. w menghancurkannya. Pilih dengan hati-hati.

















