Halo, dan selamat datang kembali.
Dalam kuliah ini, saya ingin untuk
berbicara tentang bagaimana kita dapat membaca teks dari file.
Untuk saat ini, kita akan berkonsentrasi membaca file teks.
Jadi jika kita ingin membaca karakter dari file teks, kita
akan menggunakan beberapa fungsi.
Yang pertama adalah fgetc.
Ini akan membaca karakter dari teks file yang telah dibuka untuk dibaca.
Ingat, kita harus selalu terbuka up file sebelum kami dapat melakukan operasi
file apa pun di dalamnya kecuali itu mengubah nama atau menghapus
dan kemudian file tidak dapat dibuka.
Tetapi jika Anda ingin membaca dan menulis atau menambahkan,
kita harus membuka file itu.
Kami tahu bahwa kami bisa terbuka file dengan mode yang berbeda.
Dalam hal ini untuk membaca, kita harus untuk membuka dengan r atau r plus,
dan kemudian kita dapat mulai memanggil fgetc.
Fungsi fgetc mengambil penunjuk file sebagai satu-satunya argumennya,
dan itu akan kembali karakter dibaca sebagai tipe int.
Jadi di sini sebuah contoh, kami membuat mchar ketik int, dan kita katakan fgetc pfile.
Ini akan membaca karakter ke dalam variabel mchar dengan pfile
sebagai penunjuk file.
Pikirkan pfile sudah dibuka kembali ke penunjuk file.
mchar adalah tipe karena eof yang merupakan karakter khusus
kami akhir file kami, itu dikembalikan jika akhir file telah tercapai.
Jadi kami selalu dapat memeriksanya integer untuk melihat apakah itu eof.
Dan jika ya, kami tidak mau untuk membaca
lagi, kami tidak ingin memanggil fgetc lagi.
Fungsi fgetc, yaitu setara dengan fgetc juga tersedia.
Jadi getc hampir sama dengan fgetc, Anda hanya ingin menggunakan fgetc.
Saya pikir itu memiliki beberapa perlindungan lebih di dalamnya.
Dengan getc, itu membutuhkan argumen dari jenis file bintang dan mengembalikan dan
mengembalikan karakter merah sebagai tipe int.
Ini hampir identik dengan fgetc.
Satu-satunya perbedaan di antara mereka adalah bahwa getc dapat diimplementasikan sebagai
makro, dan kami bahkan tidak tahu apa makro sekarang.
Jadi kita akan tetap dengan menggunakan fgetc sebagai fungsi kita untuk
membaca karakter.
Anda dapat membaca isi file.
Sekali lagi, bila perlu, Anda dapat menggunakan fungsi mundur ini yang memposisikan
file yang ditentukan oleh file pointer ke awal file.
Jadi Anda dapat menggunakan rewind if Anda ingin membaca lagi.
Katakan saja rewind dan kemudian penunjuk file, cukup mendasar.
Jadi inilah contohnya.
Anda harus menyertakan header io standar setiap kali kami
melakukan operasi file apa pun.
Dalam fungsi utama kami, kami akan membuat pointer file kami.
Jika saya ingin menginisialisasi ini ke null dan kita akan membuat bilangan bulat.
Hal pertama yang akan kita lakukan adalah akan membuka
file menggunakan f panggilan terbuka, dan kami akan menentukan nama file dan kami akan menentukan
bahwa itu untuk dibaca.
Itu akan mengembalikan penunjuk file kita.
Jadi sekarang penunjuk fp kita adalah menunjuk ke file yang valid.
Jika tidak dapat membuka file. txt itu tidak di jalur
yang benar atau apa pun, itu akan mengembalikan nol.
Jadi Anda ingin memeriksa nol, pastikan fp tidak nol.
Jika nol, keluar dari program.
Jika tidak, ketika Anda biasanya membaca karakter, Anda akan memasukkannya ke
dalam satu lingkaran.
Jadi di sini kita katakan sambil c sama dengan fgetc fp, ini membaca karakter
dari file kami, meneruskan penunjuk file ke fgetc, yang mengembalikan
bilangan bulat.
Ingat, kita bisa melompat keluar dari lingkaran jika bilangan bulat yang dikembalikan adalah akhir dari
file karena kami tidak mau untuk membaca melewati akhir file.
Jika tidak, kami hanya dapat mencetak karakter kita menggunakan persen c dan c.
Hal terakhir yang ingin kita lakukan adalah kita ingin menutup file, kami kemudian
ingin mengatur penunjuk file kami ke null, dan kami dapat kembali.
Mari kita coba memanfaatkan ini, membuat bagian dalam blok kode ini.
Inilah program kami di dalam blok kode.
Dikatakan, program ini tidak akan bekerja kecuali kita memiliki file di disk di
mana pun program berjalan.
Jadi pertama jika kita membangun ini, itu harus dibangun dengan baik, itu harus
membuat yang dapat dieksekusi di suatu tempat di hard drive Anda.
Saya telah menempatkan semua proyek saya di dalam direktori pinjaman dot saya.
Jadi jika saya pergi ke unduhan saya direktori dan saya pergi
ke nama proyek, yang ini hanya sebuah ujian proyek jadi di mana pun Anda menyimpan proyek Anda,
proyek saya sedang diuji.
Jika saya pergi untuk menguji, Anda akan melihat bahwa di dalam direktori bin, di
dalam debug adalah executable Anda.
Di sinilah Anda membuat Anda file jika Anda memiliki kerabat.
Path jadi di sini saya bisa membuat file baru dan kami dapat memilikinya sebagai file teks
jadi saya bisa membuatnya sebagai teks dokumen, dan itu harus diberi nama file.
Dan kemudian saya akan menempatkan beberapa informasi di dalamnya.
Saya hanya akan memasukkan beberapa data seperti hai ini adalah umpan baris Jason.
Oke, tidak, seterusnya, dan aku akan menyimpannya.
File ini harus ada di agar program ini dapat berjalan.
Jadi saya membuat file .
Sekarang ketika saya menjalankannya, semoga itu akan membaca apa yang
baru saja saya tambahkan dan mencetaknya.
Dikatakan kesalahan dan pembukaan file file tidak ada direktori
file seperti itu, dan itu mungkin karena saya memilikinya di folder debug.
Dan ini tidak berjalan di debug.
Jadi mari kita coba menjalankannya di debug, dan Saya pikir itu mungkin akan berhasil sekarang.
Kita dapat mengatakan debug, mulai.
Ini akan mencari yang dapat dieksekusi di direktori debug semoga.
Kami ingin memastikan itu dijalankan.
Masih belum ada, jadi kamu harus membuat yakin Anda tahu di mana executable berada.
Mari kita coba di tempat lain atau lebih baik lagi saya bisa menjalankan executable di
dalam debug direktori dan harus menemukannya di sana.
Jadi jika saya klik dua kali di sini, itu sebenarnya um tidak berhenti.
Ini melompat keluar.
Jadi yang bisa kamu lakukan untuk
itu adalah alih-alih kembali, Anda dapat mengatakan jeda sistem dan itu tidak akan keluar program sampai Anda menjalankannya.
Jadi sekarang mari kita coba.
Jadi sekarang dijeda, bukan jalankan programnya.
Dan yang Anda lihat adalah, hai ini Jason.
Itu dapat menemukan file, dicetak oke, dicetak tidak
dan kemudian berhenti.
Jika tidak, saat Anda mengeksekusi program, ia mencetak data dengan sangat
cepat dan keluar dari program yang Anda lakukan.
Jadi begitulah cara Anda mengujinya.
Itu harus disimpan di tempat yang dapat dieksekusi disimpan di mana itu berjalan dari.
Itu pasti lari dari suatu tempat lain di direktori proyek Anda.
Saya tidak yakin di mana itu berjalan dari.
Kita bisa mencoba memindahkan file ke mana kode sumbernya.
Mungkin menjalankannya dari sini.
Jadi di sini kita akan meletakkannya di sini.
Dan sekarang kita akan mencoba menjalankannya dari ID dan mungkin itu akan berhasil.
Kami tidak membangun.
Kami menjalankannya, dan ia dapat menemukannya.
Jadi sepertinya kita punya untuk meletakkan file di dalam tempat kode
sumber berada.
Jadi selama kita meletakkan file itu mengajukan. teks di dalam
file proyek, Anda akan dapat melihatnya.
Contoh cepat bagaimana Anda bisa buka file dan baca satu karakter, bukan
yang paling efisien cara membaca dari file karena biasanya Anda
ingin membaca string.
Tapi ini akan membukanya.
Anda melihat f panggilan terbuka, dan Anda melihat perulangan while.
Itu penting.
Mari kita kembali dan berbicara tentang caranya kita dapat membaca string dari file
yang jauh lebih efisien.
Jadi itu membaca satu karakter.
Bagaimana dengan membaca string?
Anda dapat menggunakan fungsi fgets untuk membaca dari file atau aliran apa pun.
Ini akan membaca sebuah string.
Dibutuhkan string karakter memiliki parameter pertama.
Jumlah karakter yang Anda inginkan membaca dan kemudian penunjuk file yang sebenarnya.
Jadi fungsi ini akan menjadi membaca string di area
memori yang ditunjuk oleh str.
Jadi kamu harus benar-benar melewati buffer
tempat data akan disimpan.
Dan itu adalah penunjuk, jadi Anda akan harus mengalokasikan memori untuk itu.
Dan kemudian itu akan dibaca dari file yang ditentukan sebagai parameter
ketiga yang merupakan penunjuk file.
Dan kemudian nchar akan pergi untuk mengatakan berapa banyak data yang harus dibaca.
Jadi jika Anda menempatkan nchars seperti 10, itu akan dibaca dalam 10 karakter kecuali jika
itu mengenai umpan baris terlebih dahulu.
Jadi itu akan baik membaca seluruh baris atau itu akan membaca
jumlah karakter yang Anda tentukan di parameter kedua.
Akhir baris ditentukan oleh backslash n mana yang lebih dulu terjadi.
Jika karakter baris baru berwarna merah, itu dipertahankan
dalam string dan terminator nol akan menjadi ditambahkan ke akhir string.
Jadi jika Anda benar-benar menentukan lebih banyak karakter, itu akan dibaca hingga umpan
baris, dan kemudian melompat keluar dan kemudian mendapatkan karakter
baris baru itu dan menempatkan a karakter nol di akhir itu.
Jika tidak ada kesalahan, fgets adalah akan mengembalikan pointer,
yang merupakan parameter pertama.
Ini akan mengembalikan pointer yang akan dikembalikan dari fungsi.
Dan kemudian itu juga terjadi untuk mengisi pointer str
sebagai parameter pertama.
Jika ada kesalahan null dikembalikan.
Dan kemudian membaca akhir file menyebabkan null dikembalikan, itu berarti Anda
membaca semua string Anda.
Jadi mari kita lihat sebuah contoh.
Di sini kita memiliki yang utama, dan kami sedang membuat penunjuk file kami
membuat string karakter.
Ini adalah petunjuk yang tidak kami lakukan mallocate data apa pun untuk itu, kami
hanya membuat array karakter.
Kami membuka file untuk dibaca, membaca hanya karena itu r.
Kami mengatakan jika itu nol, lompatlah.
Jika tidak, kami hanya mengatakan fgets, kita membaca dalam 60 karakter.
Atau jika umpan baris sebelumnya itu, umpan baris akan
muncul dan kemudian akan mencetaknya dan apa yang pernah ada di buffer str.
Jadi str itu dulu karakter yang lewat.
Dan kemudian kami menutup penunjuk file, setel ke nol dan kembalikan nol.
Jadi mari, sekali lagi, lihat ini di dalam kode kami memblokir IDE.
Satu-satunya hal yang berubah dalam hal ini program benar-benar baris 14 hingga 17.
Kami menggunakan fgets untuk membaca string kami di, dan kemudian kami memiliki buffer str.
Jadi kita juga perlu membuat array
karakter di sini yang merupakan str kami, dan kami ingin ini berisi 60.
Kami membaca dalam 60.
Kami akan menambahkan umpan baris, jadi ini akan membaca di 59 dan kemudian menambahkan umpan
baris ke akhir.
Jadi kita bisa mengatakan 61.
Dan kemudian fget akan masuk pernyataan if, dan itu akan
dibaca di setiap string sampai baik mencapai 60 karakter atau baris baru, dan string
itu akan dicetak.
Anda akan melihat itu tidak loop sementara, jadi kami
tidak membaca sampai akhir file.
Kami membaca akhir file, kami mendapatkan nol.
Jadi jika kita membangun ini, kita ingin membuat yakin kami memiliki kutipan kami dengan benar.
Setiap kali Anda menyalin dari powerpoint itu mengacaukan kutipan.
Dan kami ingin memastikan kami membuat variabel kami c tidak digunakan
tidak apa-apa.
Jadi mari kita lanjutkan dan jalankan ini.
Dan Anda lihat hai ini Jason.
Jadi benar-benar membaca secara keseluruhan baris teks dari file.
Itu dibaca di baris pertama.
Jadi Anda akan memanggilnya lagi dan baca di baris kedua.
Jika Anda mengubah jumlah byte baca, katakan kita hanya ingin
membaca 10, itu akan membaca dalam 10 dan kemudian akan mengembalikan 10
itu sebagai lawan membaca seluruh baris.
Jadi di sini kita hanya memilikinya hi ini saya.
Jadi itu akan terbaca dalam angka
karakter parameter kedua Anda atau sampai mendapat garis feed dan menyimpannya di str.
Str adalah array karakter.
Kami mencetaknya fgets.
Fgets lebih banyak efisien untuk membaca.
Karena kita tidak sedang membaca karakter dan pada suatu
waktu, kami membaca lebih banyak data.
Membaca karakter dalam a waktu tidak seefisien itu.
Jadi sekarang kita tahu cara membaca dalam single karakter, kita
tahu cara membaca string sampai mereka membaca yang baru baris atau sejumlah karakter.
Tapi Anda juga bisa membaca di input yang diformat dari file.
Jadi kita punya getc, fgetc, fgets.
Dan sekarang kita punya yang lain fungsi yang disebut fscanf.
Ini adalah input yang diformat.
Input yang diformat adalah data yang ditentukan oleh suka memiliki pembatas atau memiliki format
khusus yang terkait dengannya.
Fungsi fscanf ini mengambil file dari aliran dan kemudian format.
Formatnya seperti printf penentu format yang Anda gunakan.
Jadi jika Anda ingin membaca dalam bilangan bulat atau ganda, Anda dapat
menentukan data di dalam file yang diperkenalkan
di ganda dan itu akan membacanya sampai terlihat seperti scanf sampai ia melihat karakter spasi putih.
Jadi argumen pertama untuk fscanf fungsi adalah penunjuk ke objek
file yang mengidentifikasi aliran.
Kita harus tahu apa file yang kita baca.
Argumen kedua untuk fungsi adalah formatnya.
Ini adalah string c yang berisi satu atau lebih item berikut.
Karakter spasi putih, bukan spasi karakter, penentu format.
Penggunaannya sama dengan scanf dan di printf, tetapi
itu dari file.
Jadi di dalam tanda kutip ganda, Anda bisa masukkan ke dalam teks, Anda dapat
memasukkan karakter spasi putih atau non-spasi, tapi penentu format sebenarnya adalah
bagaimana Anda akan membaca data.
Dan kemudian Anda menentukan variabel yang ingin Anda baca.
Jadi fungsinya kembali jumlah item
input yang berhasil dicocokkan dan ditetapkan.
Jadi begini tampilannya.
Anda akan melihat bahwa yang utama adalah membuat tiga array karakter, str1, str2
dan str3, masing-masing hanya sepuluh byte.
Kami membuat bilangan bulat yang disebut tahun, kami menemukan penunjuk file.
Hal pertama yang kita lakukan kita buka filenya.
Dalam hal ini, kami membuka itu untuk membaca dan menulis.
Tapi kami tidak akan benar-benar menulis apa pun untuk itu, kami hanya akan menampilkan
apa yang kami baca darinya.
Kami memeriksa untuk memastikan file penunjuk tidak sama dengan nol.
Dan kemudian di sini, kita sebenarnya meletakkan sesuatu di file fputs.
Kami belum membicarakannya, tapi ini menulis sesuatu.
Fokus di sini pada fscanf.
fscanf akan membaca dalam data yang diformat.
Dan jadi apa yang akan dilakukannya apakah itu akan
dibaca dalam tiga string yang dipisahkan oleh spasi.
Dan jadi Anda melihat persennya sebagai ruang persen sebagai ruang persen
s ruang persen d.
Lalu kita mengatakan di mana kita berada akan membacanya ke dalam
array tiga karakter kami dan kemudian kami tahun, dan kita harus menentukan
operator alamat untuk tahun kita.
Tapi datanya diformat a cara tertentu ketika itu ditulis.
Dan ketika Anda membaca sesuatu yang diformat, Anda harus memahami
format file bagaimana itu ditulis.
Di sini kita tahu bahwa file tersebut ditulis dengan memisahkan string dengan spasi.
Jadi begitulah kami akan membacanya di.
Dan jadi kita bisa membacanya dengan satu panggilan fscanf.
Kami dapat menggunakan formulir kami sebagai penentu sebagai argumen kedua kami
dan kemudian jumlah variabel argumen untuk masing-masing pisahkan setiap koma untuk menentukan data
yang ingin kita baca.
Dan kemudian kami hanya mencetak itu data, tiga string di tahun dan
sekali lagi kami menutup file.
Dan ini adalah tiga cara Anda dapat membaca data dari file.
Anda dapat membaca dalam karakter, Anda dapat membaca dalam string atau Anda dapat
membaca data yang diformat.
Dan Anda akan melihat cara yang diformat melakukannya sangat mirip dengan scanf.
Anda menggunakan penentu format, variabel untuk dibaca.
Kami akan memiliki tantangan membaca data yang akan membuat Anda
lebih terbiasa dengan ini.
Ini cukup mendasar.
Anda akan melakukan pembukaan Anda panggilan, Anda akan
menggunakan pointer file Anda dan Anda pergi menggunakan ketiga fungsi tersebut.
Terima kasih.