Write () Fungsi dalam Bahasa C

Write Fungsi Dalam Bahasa C



Manajemen file dalam pemrograman adalah tugas yang harus dikuasai oleh programmer. Pengetahuan tentang berbagai fungsi buka, baca, dan tulis sangat penting karena kita selalu membutuhkannya untuk menyimpan atau membuang informasi yang disimpan dalam file.

Dalam artikel Petunjuk Linux ini, Anda akan mempelajari cara menggunakan fungsi write() untuk menulis file.







Kami akan menjelaskan semuanya tentang ella ini, sintaksnya, metode panggilan, argumen masukan dan keluaran, tipe data yang diterimanya dalam setiap kasus, dan cara mendeklarasikannya dengan benar.



Kemudian, kami menerapkan apa yang kami pelajari dengan memasukkan penggunaan fungsi ini ke dalam contoh-contoh praktis yang kami siapkan untuk Anda dengan cuplikan kode dan gambar, menunjukkan penggunaan write() dalam bahasa C.



Agar Anda memiliki pengetahuan yang komprehensif tentang penggunaan fungsi write(), kami menambahkan bagian khusus yang menjelaskan kesalahan individual yang dapat terjadi saat menggunakan fungsi ini, serta deteksi dan identifikasinya, sehingga Anda memiliki teknik yang diperlukan untuk solusi cepat jika terjadi.





Sintaks Fungsi Write() dalam Bahasa C

int menulis ( int fd , ruang kosong * buf , size_t N ) ;

Deskripsi Fungsi Write() dalam Bahasa C

Fungsi write() menulis ke file yang terbuka. Fungsi ini menulis isi buffer yang ditunjuk oleh 'buf' ke file yang ditentukan oleh deskriptornya dalam argumen masukan 'fd'. Ukuran blok yang akan ditulis ke file harus ditentukan dalam argumen input “n”.

Untuk dapat menulis dengan fungsi write(), file harus dibuka dengan fungsi open() dan ditentukan dalam atribut O_RDONLY atau O_RDWR. Jika tidak, fungsi ini tidak berpengaruh.



Jika panggilan berhasil, ia mengembalikan jumlah karakter yang dimasukkan. Jika terjadi kesalahan saat menulis, ini mengembalikan hasil yang sama dengan -1. Kode identifikasi yang menunjukkan kesalahan dapat diambil dari variabel global errno yang didefinisikan dalam header “errno.h”.

Nanti, Anda akan menemukan bagian di mana kami menjelaskan cara mendeteksi dan mengidentifikasi kesalahan paling umum dari fungsi ini.

Fungsi write() didefinisikan dalam header “unistd.h”. Bendera yang menentukan atribut dan mode untuk membuka file ditentukan dalam 'fcntl.h'. Untuk menggunakan fungsi open() dan write(), Anda harus menyertakan header ini dalam kode Anda sebagai berikut:

#termasuk

#sertakan

Cara Menulis ke File Menggunakan Fungsi Write() dalam Bahasa C

Dalam contoh ini, kami menulis file teks kosong bernama 'example.txt' yang kami buat sebelumnya di direktori 'Documents'.

Langkah pertama adalah memasukkan header yang diperlukan. Di dalam fungsi main(), buka file dengan fungsi open(). Untuk melakukan ini, kita perlu mendeklarasikan integer 'fd' yang berfungsi sebagai deskriptor file, dan array buffer 'buf' 1024 karakter yang berisi teks yang ingin kita tulis ke file. Dalam buffer ini, kami menyimpan paragraf pertama halaman manual GCC untuk menuliskannya ke file 'example.txt'.

Setelah membuka file dengan fungsi open() dalam mode baca/tulis, kita menulis ke file dengan memanggil fungsi write() dan meneruskan deskriptor file “fd” sebagai argumen input pertama, pointer “buf” sebagai argumen input kedua argumen, dan ukuran string yang terkandung dalam array sebagai argumen ketiga, yang kita peroleh dengan fungsi strlen(). Berikut adalah kode untuk contoh ini:

#termasuk

#termasuk

#termasuk

#sertakan

#termasuk

#sertakan

# sertakan

ruang kosong utama ( )

{

int fd ;

arang penyangga [ 1024 ] = 'Saat Anda menjalankan GCC, biasanya melakukan preprocessing, kompilasi, perakitan, dan penautan. Opsi keseluruhan memungkinkan Anda menghentikan proses ini pada tahap perantara. Misalnya, opsi -c mengatakan untuk tidak menjalankan linker. Kemudian outputnya terdiri dari file objek keluaran oleh assembler.' ;

fd = membuka ( 'Dokumen/contoh.txt' , O_RDWR ) ;

menulis ( fd , & penyangga , strlen ( penyangga ) ) ;

menutup ( fd ) ;

}

Pada gambar berikut, kita melihat kompilasi dan eksekusi kode ini bersama dengan file yang dibuka yang ditulis oleh fungsi write() :

Cara Menambahkan Teks di Akhir File dengan Fungsi Write() dalam Bahasa C

Saat file dibuka dengan menentukan flag O_WRONLY atau O_RDWR, kursor akan melompat ke posisi pertama dan mulai menulis dari sana.

Untuk menambahkan teks di akhir file, itu harus ditentukan oleh operasi OR logis antara flag O_WRONLY atau O_RDWR dan flag O_ APPEND dalam argumen flag masukan dari fungsi open() saat file dibuka. Dengan cara ini, kursor ditempatkan di akhir file dan penulisan dimulai dari sana. Selain itu, atribut dan mode tulis dapat diubah setelah file dibuka dengan fungsi fcntl().

Pada ilustrasi berikut, Anda dapat melihat kode yang menambahkan teks di akhir file yang kita tulis pada contoh sebelumnya:

#termasuk

#termasuk

#termasuk

#sertakan

#termasuk

#sertakan

# sertakan

ruang kosong utama ( )

{

int fd ;

arang penyangga [ 1024 ] = 'Teks ini ditambahkan. Teks ini ditambahkan.' ;

fd = membuka ( 'Dokumen/contoh.txt' , O_RDWR | O_APPEND ) ;

menulis ( fd , & penyangga , strlen ( penyangga ) ) ;

menutup ( fd ) ;

}

Gambar berikut menunjukkan teks yang ditambahkan. Seperti yang Anda lihat, dengan metode pembuka ini, fungsi write() mulai menulis pada posisi karakter terakhir yang ditulis ke file:

Cara Mendeteksi dan Mengidentifikasi Error yang Bisa Terjadi Saat Menggunakan Fungsi Write() di Bahasa C

Menggunakan write() dapat menghasilkan berbagai kesalahan. Ketika ini terjadi, fungsi ini mengembalikan hasil yang sama dengan -1.

Cara termudah untuk menentukan apakah kesalahan telah terjadi adalah dengan menggunakan kondisi “jika” di mana kondisi tersebut adalah nilai kembalian -1. Sekarang, mari kita lihat bagaimana Anda dapat menggunakan metode ini untuk menentukan apakah telah terjadi kesalahan:

int N ;

N = menulis ( fd , & penyangga , strlen ( penyangga ) ) ;

jika ( N == - 1 ) {

printf ( 'Terjadi kesalahan saat mencoba menulis file.' ) ;

}

Jika fungsi write() kembali dengan kesalahan, ia beralih ke pernyataan “jika” dan mencetak pesan, “ Terjadi kesalahan saat mencoba menulis file “.

Ketika terjadi kesalahan, kode numerik secara otomatis disimpan dalam variabel global errno yang didefinisikan dalam header “errno.h”. Kode ini dapat digunakan untuk mengidentifikasi kesalahan yang terjadi.

Berikut ini adalah kutipan error yang dapat dihasilkan oleh fungsi write() dan yang didefinisikan dalam header “errno.h”, bersama dengan deskripsi singkat dari setiap error dan nilai integer terkait:

Definisi Nilai dalam errno Kesalahan
LAGI sebelas Coba lagi.
EBADF 9 Nomor berkas salah.
EDESTADDRREQ 89 Alamat tujuan diperlukan.
EDQUOT 122 Melebihi kuota.
EFAULT 14 Alamat salah.
EFBIG 27 Berkas terlalu besar.
EINTR 4 Panggilan sistem terputus.
PILIHAN TUNGGAL 22 Argumen yang tidak sah.
EIO 5 kesalahan I/O.
ENOSPC 28 Tidak ada ruang tersisa di perangkat.
Atas 1 Operasi tidak diizinkan.

Cara termudah untuk mengidentifikasi kesalahan adalah dengan membuka saklar di mana variabel errno adalah kondisi lompatan dan setiap kasus adalah definisi kesalahan.

Selanjutnya, mari kita lihat contoh di mana kita mencoba memasukkan deskriptor dengan tanda negatif, yang mengakibatkan kesalahan. Untuk mengidentifikasi kesalahan, kami menggunakan kondisi 'jika' yang kami lihat di cuplikan sebelumnya. Untuk mengidentifikasinya, kami membuka sakelar dengan tiga kesalahan paling umum yang dapat dihasilkan oleh fungsi ini.

#termasuk

#termasuk

#sertakan

#termasuk

#sertakan

# sertakan

#sertakan

ruang kosong utama ( )

{

int fd ;

int N ;

arang penyangga [ 1024 ] = 'Halo Dunia' ;

fd = membuka ( 'Dokumen/contoh.txt' , O_RDWR ) ;

N = menulis ( - 2 , & penyangga , strlen ( penyangga ) ) ;

jika ( N == - 1 ) {

mengalihkan ( errno ) {

kasus EBADF : {

printf ( 'Nomor file salah. Kesalahan: %i \N ' , errno ) ;

merusak ; }

kasus PILIHAN TUNGGAL : {

printf ( 'Argumen tidak valid. Kesalahan: %i \N ' , errno ) ;

merusak ; }

kasus EIO : {

printf ( 'Kesalahan I/O . Kesalahan: %i \N ' , errno ) ;

merusak ; }

}

}

}

Seperti yang dapat kita lihat pada gambar berikut, fungsi write() mengembalikan kesalahan saat deskriptor yang tidak valid diteruskan sebagai argumen input. Nilai yang diambil dari variabel errno digunakan sebagai kondisi lompatan yang memungkinkan kita untuk mengidentifikasi kesalahan saat kita memasukkan kasus EBADF.

Kesimpulan

Dalam artikel Petunjuk Linux ini, kami menunjukkan cara menggunakan fungsi write() untuk menulis ke file. Kami menunjukkan kepada Anda sintaks dan deskripsi teoretis dari fungsi ini. Kami juga menjelaskan metode deteksi dan identifikasi kesalahan sehingga Anda memiliki alat dan teknik yang diperlukan untuk menyelesaikan masalah ini dengan cepat.

Untuk membantu Anda melihat cara kerja write(), kami menerapkan penggunaan fungsi ini dalam contoh praktis dengan kode dan gambar yang menunjukkan penggunaan ini dan fungsi pemrosesan file lainnya.

Kami juga menunjukkan cara memilih mode buka file untuk menyisipkan teks di awal atau di akhir file, dan fungsi apa yang tersedia untuk mengubah atribut ini.