C tidak membuat penanganan teks menjadi rumit. Ini menghilangkan lapisan abstraksi dan meninggalkan Anda dengan mekanisme mentah. Jika Anda telah melihat dokumentasi C, Anda mungkin memperhatikan bahwa semua fungsi input/output teks ada di dalam perpustakaan stdio. Ini singkatan dari input/output standar. Ini adalah landasan bagaimana program C berkomunikasi dengan dunia luar.
Kebanyakan pemula memulai dengan stdin dan stdout. Ini adalah aliran standar. Mereka mewakili di mana suatu program mendapatkan data dan di mana ia mengirimkan hasilnya. Jika aplikasi Anda hanya memerlukan satu sumber masukan dan satu sink untuk keluaran, Anda tidak memerlukan manajemen file yang rumit. Anda cukup menyalurkan data melalui baris perintah.
Enam Aliran Dasar
Header stdio menyediakan enam perintah khusus untuk berinteraksi dengan aliran ini. Itu sederhana. Langsung.
- printf : Menulis teks yang diformat ke stdout.
- scanf : Membaca data yang diformat dari stdin.
- puts : Menampilkan string ke layar.
- mendapat : Membaca sebaris teks dari keyboard.
- putc : Menulis satu karakter ke stdout.
- getc atau getchar : Membaca satu karakter dari stdin.
Mengapa menggunakan ini? Karena Anda dapat mengarahkan mereka. Di sinilah C bersinar. Anda tidak perlu mengubah kode untuk membaca dari file, bukan dari keyboard. Anda tinggal mengubah perintah yang Anda ketikkan di terminal.
Menghitung Karakter Dengan Cara Mudah
Mari kita lihat contoh praktisnya. Bayangkan Anda menginginkan sebuah program yang menghitung total karakter dalam input teks. Ini kodenya:
Kode ini menunggu masukan. Anda mengetik baris. Jika sudah selesai, kamu tekan CTRL-D. Ini menandakan akhir file (eof ). Fungsi gets mengembalikan nol ketika mencapai eof, sehingga memutus perulangan. Hitungan terakhir dicetak ke layar.
Tapi inilah triknya. Anda tidak perlu mengedit kode untuk menghitung karakter dalam file. Anda baru saja menambahkan instruksi kecil ke shell.
Mengarahkan Input dan Output
Jika Anda mengkompilasi program ini ke dalam executable bernama xxx, Anda dapat memasukkannya ke dalam file.
Tanda kurung sudut mengalihkan konten nama file ke stdin. Program menganggapnya sedang membaca dari keyboard. Tidak. Itu membaca dari disk.
Anda juga bisa menggunakan pipa. Ini meneruskan output dari satu perintah langsung ke perintah lainnya.
Ini adalah hasil yang sama. cat membuang file ke output standar. Pipa mengirimkannya ke program Anda.
Anda juga dapat mengarahkan hasilnya. Daripada melihat hitungan di layar, Anda dapat menyimpannya.
Sekarang xxx membaca dari nama file dan menulis hasilnya ke dalam file teks baru bernama keluar. Ini sangat kuat. Ini memungkinkan Anda menyatukan alat tanpa menulis kode tambahan untuk menangani penunjuk file.
Saat Streaming Tidak Cukup
Terkadang pengalihan saja tidak cukup. Mungkin Anda perlu membuka banyak file sekaligus. Mungkin Anda sedang membuat editor teks yang menyimpan file konfigurasi. Mungkin Anda perlu memeriksa apakah Anda telah mencapai akhir file tanpa mengalami crash.
Dalam kasus ini, Anda memerlukan fungsi file langsung. Ini juga ada di stdio, tetapi beroperasi pada penunjuk file, bukan pada aliran standar.
- fopen : Membuka file untuk dibaca atau ditulis.
- fclose : Menutup file setelah selesai.
- feof : Memeriksa apakah Anda telah mencapai akhir file.
- fprintf : Menulis data yang diformat ke file tertentu.
- fscanf : Membaca data yang diformat dari file tertentu.
- fputs : Menulis string ke file.
- fgets : Membaca baris dari file.
- fputc : Menulis karakter ke file.
- fgetc : Membaca karakter dari file.
Fungsi-fungsi ini memberi Anda kontrol lebih besar. Anda dapat mengelola beberapa aliran sekaligus. Anda dapat memutuskan dengan tepat file mana yang mendapatkan data mana.
Jalan mana yang kamu ambil? Kesederhanaan pengalihan stdin atau kontrol penunjuk file langsung? Itu tergantung pada apa yang Anda bangun. Untuk skrip cepat, pengalihan adalah rajanya. Untuk aplikasi yang kompleks, Anda memerlukan fungsi file.
Tidak ada jawaban yang sempurna. Hanya trade-off.





















