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!