Halo, dan selamat datang kembali.
Dalam kuliah ini, saya ingin berbicara tentang mengakses file.
Jadi file di disk memiliki nama dan aturan penamaan file ditentukan
oleh sistem operasi Anda.
Anda mungkin harus menyesuaikan nama tergantung pada OS yang dijalankan
oleh program Anda.
Jika program Anda berjalan di windows versus Linux, struktur
direktori sebenarnya juga berbeda.
Jadi jika Anda menggunakan slasher maju atau garis miring ke belakang, Anda
harus menyesuaikan ini di program Anda.
Tetapi sebagian besar, nama yang relatif memiliki aturan penamaan yang
sama dan lain sebagainya.
Tapi ada kemungkinan bahwa Anda harus menyesuaikannya.
Sebuah program mereferensikan file melalui penunjuk file atau penunjuk aliran.
Karena ini berfungsi lebih dari sekadar file, Anda
sebenarnya bisa, kami menyebutkan ini sebelumnya, tetapi standar fungsi io berfungsi di perangkat apa pun.
Jadi ini disebut penunjuk file, tapi itu benar-benar harus disebut
sebagai penunjuk aliran.
Anda mengaitkan penunjuk file dengan file secara terprogram saat
program Anda dijalankan.
Jadi apa yang akhirnya Anda lakukan adalah Anda akan buat pointer
di dalam program Anda, itu akan bertipe file dan itu akan mewakili file saat Anda
membaca dan menulisnya.
Kami menggunakan pointer file ini sebagai cara yang lebih efektif untuk benar-benar menunjuk ke file
sebagai lawan untuk nama karena nama bisa
sedikit berbeda.
Pointer akan mewakili apa yang sebenarnya ditunjuk.
Dan Anda dapat menggunakan kembali pointer, untuk menunjuk ke file
yang berbeda pada kesempatan yang berbeda, yang, sekali lagi, diwakili oleh nama file.
Pointer file menunjuk ke sebuah struktur jenis file yang mewakili aliran.
Anda benar-benar dapat pergi dan melihat di struct file untuk melihat semua
yang ada di dalamnya.
Tapi itu berisi informasi seperti seperti apakah Anda ingin
membaca atau menulis atau memperbarui file, alamat buffer di memori tempat Anda
menyimpan data, a pointer ke posisi saat ini dalam
file untuk operasi berikutnya.
Kami menyebutkan posisinya adalah penting karena di
situlah Anda menulis dan membaca.
Dan Anda dapat mengatur semua informasi ini di dalam struktur dengan
menggunakan operasi file input dan output.
Operasi file input output, ketika Anda membuka file, itu akan benar-benar
menentukan apakah Anda ingin membaca atau menulis.
Dan kemudian Anda juga dapat mengubah posisi saat ini dengan menggunakan metode lain
seperti seek dan sebagainya yang akan kita bicarakan.
Jika Anda ingin menggunakan beberapa file simultan dalam program Anda, Anda
harus membuat yang terpisah penunjuk file untuk setiap file.
Anda hanya dapat menggunakan kembali file pointer jika Anda membaca dan menulis pada
waktu yang berbeda.
Ada batasan jumlah pembukaan file yang dapat Anda miliki sekaligus.
Anda dapat melihat batas di IO standar, ada
konstanta yang ditentukan f open max semuanya tergantung pada sistem operasi apa
yang Anda jalankan.
Tetapi Anda biasanya tidak ingin membuat dan buka banyak file sekaligus.
Menulis dan membaca file adalah operasi yang mahal karena Anda menulis
di hard drive.
Tidak secepat menulis memori, sehingga
membutuhkan waktu dan dapat menyebabkan program Anda menjadi kurang responsif begitu.
Anda tidak ingin memiliki 10 file terbuka dan menulis di
10 file pada waktu yang sama.
Untuk membuka file, ini akan jadilah langkah pertama yang Anda lakukan
sebelum Anda membaca dan menulis.
Jadi, Anda ingin mengaitkan yang spesifik nama
file eksternal dengan seluruh penunjuk akhir melalui suatu proses disebut sebagai membuka file.
Cara Anda membuka file dan lihat apakah Anda memanggil fungsi buka f.
Ini akan mengembalikan file pointer yang kemudian dapat Anda
gunakan untuk membaca dan menulis.
Dan lagi, penunjuk filenya adalah akan menunjuk ke file
eksternal tertentu yang ada di disk.
F terbuka akan mengambil nama filenya.
F terbuka adalah apa yang harus Anda lakukan sebelum Anda membaca/menulis.
Ini biasanya operasi pertama Anda.
Dan seperti kebanyakan fungsi ini, mereka semua didefinisikan dalam standardio. H.
Berikut definisinya dari f panggilan terbuka.
Anda akan melihat bahwa pengembaliannya value adalah penunjuk file,
itu semua huruf besar, struktur file.
Jadi semua caps file.
Anda kemudian akan melihat bahwa dibutuhkan beberapa parameter, dibutuhkan nama
dan mode dan jangan khawatir tentang ini batasi itu hanya lebih banyak barang C11.
Itu benar-benar hanya membutuhkan karakter pointer ke nama dan mode.
Argumen pertama dari fungsi adalah penunjuk ke string
yang merupakan nama file, sehingga akan berada di dalam tanda kutip ganda.
Anda dapat menentukan nama secara eksplisit atau gunakan penunjuk karakter yang berisi
alamat string karakter.
Jadi semua yang dikatakan adalah Anda bisa buat string karakter dan masukkan
ke teks literal dan kemudian berikan string ke fungsi
atau Anda dapat memasukkannya ke dalam double kutipan tepat di dalam panggilan fungsi.
Anda dapat memperoleh nama file melalui baris perintah sebagai
input dari pengguna juga atau tentukan itu sebagai konstanta program Anda.
Jika selalu file yang sama Anda sedang membaca tulisan
dan nama tidak masalah, Anda hanya bisa disebut sebagai konstanta.
Jika program Anda lebih fleksibel, itu bisa mendapatkan masukan dari pengguna untuk mengatakan apa yang ingin
Anda baca atau tulis.
Argumen kedua untuk f terbuka fungsi adalah string karakter yang
mewakili mode file.
Ini menentukan apa yang ingin Anda lakukan dengan file, apakah
Anda ingin membacanya, apakah Anda ingin menulis ke itu, apakah Anda ingin menambahkannya.
Spesifikasi mode file adalah string karakter di antara tanda
kutip ganda, dan saya akan menunjukkan Anda beberapa dari yang kita
akan berakhir menggunakan banyak.
Dengan asumsi panggilan ke f terbuka berhasil, itu akan mengembalikan penunjuk
file itu, semua huruf besar.
Dan kemudian Anda dapat menggunakan file ini pointer untuk memanggil fungsi input/output
lainnya di header IO standar, dan kita akan melaluinya ketika kita
membaca dan menulis atau Anda juga bisa mendapatkan posisi menggunakan
pointer itu untuk mengubah posisi di mana Anda berada dalam file.
Jika file tidak dapat dibuka untuk beberapa alasan, f open
akan mengembalikan null.
Jadi apa artinya ini di hadapanmu mulai membaca atau menulis
apa pun, pastikan penunjuknya tidak sama dengan nol, yang lain jika cek.
Berikut filenya mode yang saya sebutkan.
Mode file, ingat, adalah parameter kedua untuk panggilan terbuka f.
Inilah yang menentukan apa yang Anda ingin lakukan dengan file, dan itu
semua di dalam tanda kutip ganda.
Jadi jika Anda melakukan w, itu berarti Anda ingin untuk membuka file teks untuk menulis.
Jika Anda melakukan a, itu berarti Anda ingin untuk membuka file teks untuk ditambahkan,
semua penulisan berada di akhir file.
Jika Anda melakukan r, itu terbuka file teks untuk dibaca.
Jika Anda menambahkan nilai tambah ke salah satu dari ini, pada dasarnya akan membuat
file jika tidak ada.
Jadi jika Anda membuka file w plus, itu akan membukanya untuk pembaruan dan itu
akan memotong file menjadi nol jika ada atau bisa membuat file baru
jika tidak ada.
Dengan yang lain, itu akan menulis atau membaca um dan
file harus ada.
Sama dengan plus, itu akan terbuka itu untuk menambahkan, untuk pembaruan, ke akhir
file yang ada atau buat file jika tidak ada.
Dan r plus akan terbuka file teks untuk pembaruan, itu
tidak akan membuat file di sana karena akan kosong.
Jadi bacaannya hanya untuk membaca dan menulis ketika Anda
melihat r plus.
Sedikit berbeda dari yang lain plus di mana mereka benar-benar
membuat file itu tidak ada.
modus menulis.
Jika Anda ingin menulis ke file teks yang
ada dengan nama myfile. txt, Anda akan membuat penunjuk file Anda, semua huruf besar.
Setel ke nol, inisialisasi itu nol.
Dan kemudian Anda mungkin akan membuat file Anda
sebagai penunjuk karakter lain, myfile. txt atau Anda bisa berikan itu sebagai parameter pertama, dan
kemudian Anda hanya mengatakan f buka.
F buka nama file lalu w di dalamnya tanda kutip ganda yang membuka file
untuk menulis dan mengembalikan pointer file.
Itu sebabnya Anda memiliki file p kiri tugas.
Anda kemudian ingin memeriksa untuk membuat yakin file p tidak sama dengan nol.
Karena jika itu nol, jika itu gagal dibuka
karena alasan apa pun mungkin nama filenya salah atau tidak ada, maka Anda tidak
akan dapat menulisnya.
Jadi Anda selalu ingin melakukan f periksa dan cetak
beberapa informasi jika tidak terbuka.
Kode ini akan membuka file dan itu akan
mengasosiasikan file dengan nama myfile. txt dengan file Anda pointer file fp.
Modus w berarti kita hanya bisa menulis ke file, Anda tidak dapat membacanya.
Jika file dengan nama file saya teks itu tidak ada,
panggilan ke f open akan membuat yang baru
file dengan nama ini, dan itu untuk f buka dengan opsi w.
Jadi ketika kita melihat sebelumnya mode, w plus akan membuat file jika tidak ada tetapi
itu juga memotong file ke nol.
Itu bedanya dengan w.
W akan dibuat jika itu tidak ada, tapi itu
tidak akan memotongnya menjadi nol.
Jadi ini adalah cara standar untuk membuka file, menggunakan w
di dalam tanda kutip ganda.
Jika Anda hanya memberikan nama file tanpa spesifikasi jalur apa
pun, jadi itulah yang kami lakukan dalam hal ini contoh,
jalur yang diingat adalah nama direktori.
Jika Anda tidak memberikan nama direktori, itu akan mengasumsikan bahwa file
itu ada di direktori saat ini dimanapun program dijalankan.
Jika Anda ingin benar-benar membuka up file di
tempat lain di mana sebenarnya tidak berada direktori program, maka Anda
harus menentukan seluruh jalur.
Itu disebut jalan absolut.
Ketika Anda tidak memberikan jalan biasanya jalur relatif, itu relatif
ke tempat program berjalan.
Jadi Anda dapat menentukan salah satunya, yaitu jalur absolut
atau relatif, pastikan Anda tahu di mana lokasinya dan Anda melakukan yang benar.
Jalur relatif biasanya lebih baik karena itu tidak tergantung.
Jika seseorang akan pindah file itu tidak tergantung
di mana ia dipindahkan.
Dan Anda benar-benar dapat melakukan jalur relatif, dan Anda dapat kembali ke
direktori, sehingga Anda dapat melakukan titik slash dan itu relatif terhadap tempat
program berjalan, Anda hanya akan kembali beberapa direktori.
Saat Anda menggunakan absolut jalan, itu sebenarnya akan
menjadi seperti program c usus besar file jika Anda menggunakan windows.
Dan jika file itu pernah dipindahkan, program tidak akan bisa membukanya.
Jadi saat membuka file untuk menulis tautan file terpotong
menjadi nol, dan posisinya akan menjadi di awal setiap data yang
ada untuk operasi pertama.
Data apa saja yang sebelumnya ditulis ke file akan
hilang dan ditimpa oleh operasi penulisan apa pun.
Jadi sekali lagi tanpa memberikan plus di atasnya, itu hanya berarti Anda tidak
bisa membaca dan menulis.
Ini hanya menulis.
W benar saja.
W plus berarti Anda dapat membaca dan menulis.
Tambahkan mode.
Jika Anda ingin menambahkan ke yang sudah ada file teks daripada menimpanya,
Anda dapat menentukan mode a.
Ini tergantung.
Ini memposisikan file di akhir dari setiap data yang ditulis sebelumnya.
Jika file tidak ada, itu menciptakan yang baru.
Contoh di sini adalah Anda hanya ubah parameter kedua menjadi tanda kutip
ganda di dalam, itu akan ditambahkan ke akhir myfile. txt.
Dan jangan lupa bahwa Anda harus selalu menguji
nilai pengembalian untuk nol setiap kali.
Anda selalu ingin melakukan if p file tidak sama dengan nol.
Saat Anda membuka file di append mode, semua operasi tulis
akan berada di akhir data dalam file di setiap operasi tulis.
Semua operasi tulis ditambahkan data ke file, dan
Anda tidak dapat memperbarui konten yang ada di mode ini, semuanya ada di akhir.
Dalam mode baca kita bisa membuka up file untuk membaca file.
Kami hanya menggunakan r dalam tanda kutip ganda.
Ini hanya bisa dibaca, kamu tidak dapat menulis ke file.
Jika Anda melakukan r plus, Anda akan melakukannya bisa membaca dan menulis.
Jadi sepertinya panggilan lain, Anda cukup melakukan f open, berikan
nama file dan kemudian r dalam double kutipan yang mengembalikan penunjuk file.
Kami juga akan memposisikan file ke awal data.
Jika Anda hanya akan membaca file, itu harus sudah ada.
Anda tidak akan membaca file kosong.
Jadi tidak ada pilihan untuk membuat file itu tidak ada, itu
hanya akan kosong atau Anda akan kembali lawan file akan menjadi nol.
Jika Anda mencoba membuka file untuk membacanya tidak ada,
itu akan mengembalikan pointer nol.
Jika memang ada dan kosong, Anda hanya tidak akan mengembalikan data.
Anda selalu ingin memeriksa nilai kembali dari f terbuka.
Sekali lagi, membaca itu untuk kedua kalinya, itu penting.
Karena jika itu adalah pointer nol, program Anda akan crash, itu
akan melakukan sesuatu yang buruk.
Mengganti nama file.
Sekarang kita tahu cara membuka file.
Membuka file adalah yang pertama operasi, Anda menentukan
mode dan nama file.
Itu memberi Anda kembali file pointer yang sekarang dapat
Anda gunakan untuk melakukan hal-hal lain.
Mengganti nama file adalah terkadang penting.
Ini sangat mudah.
Anda cukup menggunakan fungsi rename.
Dibutuhkan nama lama dan nama baru name sebagai pointer karakter
konstan, dan mengembalikan sebuah int.
Bilangan bulat yang dikembalikan akan menjadi nol jika
perubahan nama berhasil dan bukan nol sebaliknya.
File tidak boleh dibuka saat Anda memanggil ganti nama.
Kalau tidak, itu akan gagal karena sedang digunakan, Anda tidak dapat mengganti
nama file saat sedang digunakan.
Jadi yang bisa kamu lakukan di sini adalah kamu bisa katakan saja rename, berikan nama file lama
dan nama file baru.
Dalam contoh ini, kami menggunakan path ke file di windows.
Dan Anda tahu itu windows karena saya melihat titik dua.
Anda juga memperhatikan bahwa garis miring terbalik ada dua kali.
Alasannya adalah karena backslash adalah karakter khusus di c.
Backslash n adalah umpan balik garis.
Backslash r adalah carriage return.
Jadi backslash memiliki spesial makna dalam program.
Jadi jika Anda ingin benar-benar menggunakan garis miring terbalik untuk jalur di direktori,
yang dilakukan windows, Anda harus menyediakan dua di antaranya.
Dan jadi di sini kita mengganti nama sebuah file saya. txt menemukan direktori
temp.
Kami mengganti namanya menjadi garis bawah file saya salinan. teks dalam direktori percobaan.
Dan jika itu tidak sama untuk satu, itu akan gagal.
Kami hanya mencetak output yang mengatakan gagal.
Jika tidak, hasil cetak Anda berhasil.
Ini akan mengubah nama file saya. txt di direktori temp ke salinan file saya.
Jika jalur file salah atau file tidak ada, tidak akan
bisa diganti namanya.
Anda juga dapat menutup file dan Anda ingin untuk melakukan ini setiap kali Anda membuka file.
Jadi ketika Anda selesai dengan file itu sendiri, Anda ingin
memberi tahu sistem operasi untuk mengosongkan file itu.
Ingat, ada batasnya berapa banyak file yang
dapat Anda buka pada waktu tertentu.
Anda dapat melakukan ini dengan menelepon fungsi tutup f.
F tutup menerima file penunjuk sebagai argumen.
Ingat, penunjuk file mewakili file.
Ini mengembalikan eof.
Eof adalah sebuah int.
Mengembalikan eof jika terjadi kesalahan.
Eof adalah karakter khusus disebut akhir karakter file.
Ini didefinisikan dalam standardio. H sebagai bilangan bulat negatif.
Biasanya setara ke yang negatif.
Jika f close berhasil, itu akan kembali nol.
Jadi Anda dapat memeriksa eof untuk tidak berhasil.
Anda hanya mengatakan f close pass di pointer, Anda kemudian dapat mengatur
pointer ke null dan hasil panggilan f close adalah koneksi antara
pointer, file p dan file fisik rusak.
File P tidak dapat digunakan lagi untuk mengakses file untuk
membaca, menulis atau menambahkan atau mengganti nama.
Jika file sedang ditulis, isi buffer keluaran saat ini ditulis ke
file ke memastikan bahwa data tidak hilang.
Jadi Anda tidak memiliki masalah dengan integritas data, Anda tidak
akan benar-benar menutup file jika itu sedang ditulis ke dalam utas lain.
Jadi threadnya aman.
Kami belum berbicara tentang utas, itu konsep yang lebih maju.
Tapi di situlah Anda dapat memiliki banyak titik eksekusi dalam program Anda.
Ini adalah praktik pemrograman yang bagus untuk menutup file segera setelah
Anda selesai melakukannya, seperti itu adalah praktik pemrograman yang
bagus untuk membebaskan memori saat Anda selesai dengan itu, sama untuk menutup file.
Ini melindungi terhadap kehilangan data keluaran.
Anda juga harus menutup file sebelum mencoba
mengganti nama atau menghapusnya, itu harus ditutup tidak bisa dibuka.
Bagaimana dengan menghapus file.
Anda dapat menghapus file dengan memanggil fungsi hapus.
Ini juga dideklarasikan dalam standardio. H.
Semua operasi file adalah dinyatakan dalam standar. oh.
Anda selalu dapat melihat ini file header jika Anda ingin
di mana pun file header c diinstal.
Jadi Anda hanya mengatakan hapus nama filenya.
Di sini Anda tidak perlu menggunakan penunjuk file.
Anda hanya bisa mengatakan karena file tidak
harus benar-benar terbuka untuk menghapusnya.
Sama dengan rename karena Anda sebenarnya tidak ingin file dibuka karena ganti
nama atau hapus akan gagal.
Ini akan menghapus file yang memiliki nama myfile. txt dari direktori
saat ini.
Ini menyediakan jalur relatif.
Ini akan mencari file itu dimanapun program dijalankan.
Jika tidak, Anda perlu memberikan jalan mutlak.
File tidak dapat dibuka saat Anda coba hapus, sama seperti rename.
Anda harus selalu memeriksa ulang dengan operasi yang menghapus file.
Anda bisa menghancurkan Anda sistem jika Anda tidak.
Penghapusan sangat mahal, operasi yang sangat berbahaya.
Menghapus file dapat menyebabkan masalah.
Jadi berhati-hatilah.
Semua informasi dalam kuliah ini ada hubungannya dengan mengakses file, bagaimana Anda
dapat membuka file, yang adalah apa yang perlu Anda lakukan sebelum
membaca dan menulis, dan juga bagaimana Anda dapat menghapus dan mengganti nama file dan kemudian
menutupnya setelah Anda selesai menggunakannya.
Semuanya didasarkan dari penunjuk file itu.
Jadi pahami penunjuk file itu dan struktur yang dikandungnya.
Hal-hal yang cukup berguna.
Header io standar berisi semua informasi hebat.
Beberapa kuliah berikutnya, kita akan
pergi untuk berbicara tentang membaca dan menulis ke file teks, sebenarnya menambahkan data atau menambahkan atau membacanya.
Terima kasih. Saya harap ini membantu.