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!