GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Menambahkan File di C, menggunakan Open in O_APPEND Mode di linux?

Yah, saya baru saja mencoba program Anda dan mengetahui apa yang salah.

Pada dasarnya, ini berfungsi, tetapi dengan kesalahan. Ketika Anda pertama kali menulis "kejatuhanmu" ke dalam file, Anda menggunakan char larik 4096 byte, dan Anda menulis seluruh array ke dalam file. Yang artinya Anda menulis "kejatuhanmu" diikuti dengan 4088 karakter acak apa-apa. Nanti, saat Anda menambahkan, Anda menambahkan di posisi 4097 dan seterusnya. Ini mungkin bukan yang ingin Anda lakukan.

Jika Anda hanya cat file yang Anda buat, Anda akan melihat hasil yang diharapkan "kejatuhanmu, bung". Tetapi ketika Anda membacanya seluruhnya dalam kode Anda, Anda hanya membaca 4096 karakter. Oleh karena itu, bagian ", dude" tidak pernah dibaca, itulah sebabnya program Anda tidak pernah menampilkannya.

Solusi saya, Anda perlu mengubah ukuran array Anda. Dan saat membaca, baca dalam potongan katakanlah 100 atau 1000, sampai Anda mencapai EOF (read akan mengembalikan -1).


Jumlah byte yang Anda coba tulis salah,

char buf[BUFFSIZE] = {'t', 'h', 'y', ' ', 'f', 'a', 'l', 'l'};
size_t n = sizeof(buf);
if(write (fd, buf, n) < 0){

alih-alih itu yang harus Anda lakukan

char buf[BUFFSIZE] = {'t', 'h', 'y', ' ', 'f', 'a', 'l', 'l', '\0'};
size_t n = strlen(buf); //use strlen 
if(write (fd, buf, n) < 0){

Demikian pula, lakukan ini untuk menulis dan membaca lainnya juga. Jika Anda tidak menulis '\0' dalam file untuk mengakhiri string, Anda tidak akan mendapatkannya saat membaca data dari file.

Saat membaca Anda harus mencoba sampai seluruh file dibaca, yaitu. Anda mendapatkan EOF .


Hanya ada kesalahan kecil, Anda perlu mengubah sizeof berfungsi untuk strlen karena sizeof fungsi akan mengembalikan ukuran array tetapi strlen fungsi hanya mengembalikan panjang string yang disimpan dalam array!


Linux
  1. Cara Menambahkan Teks ke Akhir File di Linux

  2. Cara membagi iso atau file menggunakan perintah 'split' di Linux

  3. Bagaimana cara membuka nama file putus-putus menggunakan terminal?

  1. Cara Menulis Teks Pada Gambar menggunakan Perintah Linux

  2. Cara Mudah Menambahkan Teks ke Akhir File di Linux

  3. Bagaimana memulihkan file yang terbuka tetapi terhapus di Linux menggunakan ln, bukan cp?

  1. Penanganan File dengan Python:Buat, Buka, Tambahkan, Baca, Tulis

  2. Bagaimana cara menulis file dengan C di Linux?

  3. Cara membuka file di vim menggunakan pipa