Rumah Kewangan Peribadi C Pengaturcaraan: Cara Mengakses Fail yang Disimpan dalam Penyimpanan Rawak - dummies

C Pengaturcaraan: Cara Mengakses Fail yang Disimpan dalam Penyimpanan Rawak - dummies

Isi kandungan:

Video: Top 25 Word 2016 Tips and Tricks 2024

Video: Top 25 Word 2016 Tips and Tricks 2024
Anonim

Akses fail rawak dalam pengaturcaraan C tidak ada hubungannya dengan nombor rawak. Sebaliknya, fail tersebut boleh diakses di mana-mana tempat, di sana, dan bahkan di sana. Jenis akses ini berfungsi dengan baik apabila fail tersebut dihiasi dengan rekod saiz yang sama. Pengertian rekod membawa struktur, yang dengan mudah boleh ditulis ke fail dan kemudian diambil balik secara individu, terpilih, atau sekaligus.

Cara membaca dan memutar balik

Seperti program anda membaca data dari fail, ia menjejaki kedudukan dari mana data dibaca dalam fail. Kedudukan kursor dikekalkan supaya lokasi di mana kod membaca atau menulis dalam fail tidak hilang.

Apabila pertama kali membuka fail, kedudukan kursor berada di permulaan fail, bait pertama. Jika anda membaca rekod 40-bait ke dalam ingatan, kedudukan kursor adalah 40 bait dari awal. Jika anda membaca sehingga akhir fail, kedudukan kursor juga mengekalkan lokasi tersebut.

Untuk mengelakkan perkara yang mengelirukan, kedudukan kursor sering dirujuk sebagai penunjuk fail , walaupun ia bukan pembolehubah penunjuk atau jenis penunjuk FILE. Ini hanya lokasi dalam fail di mana data seterusnya akan dibaca.

Anda boleh huru-hara dengan kedudukan kursor dengan menggunakan beberapa fungsi menarik di C. Dua daripada mereka adalah ftell () dan mundur (). Fungsi ftell () mengembalikan kedudukan kursor semasa yang diimbangi sebagai nilai int panjang. Fungsi mundur () menggerakkan kursor kembali ke permulaan fail.

Gelung sementara dalam Tell and Rewind dibaca dalam rekod dari ikatan. db fail. Di Talian 28, fungsi ftell () mengembalikan kedudukan kursor. Jika lebih besar daripada satu entri (bererti bahawa entri kedua telah dibaca), kedudukan kursor ditetapkan semula ke permulaan fail oleh fungsi mundur () pada Talian 29.

TELL DAN REWIND

# include # termasuk #include int main () {entry struct {char actor [32]; int tahun; tajuk char [32];}; bon kemasukan struktur; FILE * a007; int count = 0; a007 = fopen ("bon. db", "r"); jika (! a007) {puts ("menang SPECTER!"); (1);} while (fread (& bond, sizeof (entry struct), 1, a007)) {printf ("% st% dt% sn" jika (ftell (a007)> sizeof (entri struktur)) mundur (a007); kiraan ++; jika (count> 10) pecah;} fclose (a007); kembali (0);}

Untuk menentukan offset yang sepatutnya, pernyataan jika membandingkan hasil daripada fungsi ftell () dan pengendali sizeof entri struktur. Perlu diingat bahawa ftell () hanya mengembalikan nilai int panjang, bukan bilangan struktur tertentu.

Kira-kira pemboleh ubah, diisytiharkan dan diasaskan pada Talian 14, menjejaki berapa kali gelung sementara berulang. Sekiranya tidak, program ini akan dilancarkan tanpa henti. Itu teruk. Oleh itu, apabila nilai kiraan lebih besar daripada 10, gelung memecahkan dan kemudian fail ditutup dan program berakhir.

Latihan 1 : Ketik kod sumber daripada Beritahu dan Pulangkan ke editor anda. Bina dan lari untuk melihat bagaimana fungsi ftell () dan mundur () berfungsi.

Bagaimana untuk mencari rekod tertentu

Apabila fail mengandungi rekod semua saiz yang sama, anda boleh menggunakan fungsi fseek () untuk memetik sebarang item individu. Format untuk fseek () ialah

fseek (mengendalikan, mengimbangi, dari mana);

mengendalikan adalah pemegang fail, penunjuk FILE mewakili fail yang dibuka untuk membaca. mengimbangi ialah bilangan bait dari permulaan, akhir, atau kedudukan semasa dalam fail. Dan mana adalah salah satu dari tiga pemalar: SEEK_SET, SEEK_CUR, atau SEEK_END untuk permulaan, kedudukan semasa, atau akhir fail, masing-masing.

Selagi fail anda mengandungi rekod saiz yang tetap, anda boleh menggunakan fseek () untuk memetik rekod tertentu, seperti yang ditunjukkan dalam Cari Rekod Khusus dalam Fail.

MEMERIKSA REKAIR KHUSUS DALAM FILE

#include #include #include int main () {entry struct {char actor [32]; int tahun; tajuk char [32];}; bon kemasukan struktur; FILE * a007; a007 = fopen ("bon. db", "r"); jika (! a007) {puts ("menang SPECTER!"); keluar (1);} fseek (a007, sizeof (entri struktur) * 1, SEEK_SET); fread (& bond, sizeof (entri struktur), 1, a007); printf ("% st% dt% sn", bon aktor, bon tahun, gelaran); fclose (a007); kembali (0);}

Kod yang ditunjukkan dalam Cari Rekod Khusus dalam Fail sekali lagi agak serupa dengan kod yang ditunjukkan dalam Penyenaraian 22-9. Penambahan besar ialah fungsi fseek () yang ditunjukkan pada Baris 21. Ia menetapkan kedudukan kursor supaya fungsi fread () yang berikut (merujuk kepada Baris 22) dibaca dalam rekod tertentu yang terletak di dalam pangkalan data.

Pada Talian 21, fungsi fseek () memeriksa file yang diwakili oleh mengendalikan a007. Offset dikira dengan mengalikan saiz struktur penyertaan.

Seperti pada array, mengalikan saiz itu dengan 1 menghasilkan rekod kedua dalam fail; kalikan nilai dengan 0 (atau sebutkan 0 dalam fungsi) untuk membaca rekod pertama. The SEEK_SET malar memastikan bahawa fseek () mula melihat dari permulaan fail.

Kesan bersih kod adalah bahawa rekod kedua dalam ikatan tersebut. db fail dipaparkan.

Latihan 2: Taip kod sumber dari Cari Rekod Spesifik dalam Fail. Bina dan jalankan untuk melihat rekod kedua dalam fail.

C Pengaturcaraan: Cara Mengakses Fail yang Disimpan dalam Penyimpanan Rawak - dummies

Pilihan Editor

Cara RSVP ke Acara di Ning - patung

Cara RSVP ke Acara di Ning - patung

Di Ning, setelah anda menemukan persidangan itu mencari atau parti yang ingin anda hadiri, anda perlu RSVP untuk acara tersebut supaya pihak penganjur boleh mendapatkan jumlah minuman, makanan dan barang yang sesuai untuk semua peserta - dan juga rakan-rakan rangkaian anda yang tahu anda akan pergi . Untuk RSVP ...

Cara Menghantar Mesej Peribadi di Ning - dummies

Cara Menghantar Mesej Peribadi di Ning - dummies

Mesej hanya dengan dua kumpulan orang: rakan anda dan Pentadbir (termasuk Pencipta Rangkaian). Mesej peribadi Ning memberi anda cara yang ideal sebagai ahli untuk berkomunikasi dengan ahli-ahli lain dalam rangkaian tanpa semua orang mengetahui tentangnya:

Pilihan Editor

Dimensi web untuk Infographics anda - dummies

Dimensi web untuk Infographics anda - dummies

Cabaran untuk menilai infographic untuk web adalah saiz reka bentuk kini sangat berubah , tiada standard untuk bercakap. "Reka bentuk responsif" yang dibawa dengan kemunculan HTML5 mengubah landskap reka bentuk web secara kekal. Tidak seperti grafik yang dicetak, di mana setiap orang yang melihatnya mengalaminya dalam saiz yang sama, ...

Pilihan Editor

Bagaimana Menganalisis Sentimen dan Kesan Penglibatan Media Sosial Anda - pemahaman

Bagaimana Menganalisis Sentimen dan Kesan Penglibatan Media Sosial Anda - pemahaman

Komuniti mempunyai tindak balas yang positif, negatif, atau neutral kepada anda dan jenama anda boleh membantu anda menentukan bagaimana untuk terus mengendalikan pendekatan penglibatan media sosial anda. Bagaimana anda mengukur pesaing dalam minda penonton dalam talian anda adalah satu lagi faktor penting untuk dinilai. Anda juga boleh memanfaatkan ...

Cara Tanya Ahli Komuniti Dalam Talian untuk Ulasan - dummies

Cara Tanya Ahli Komuniti Dalam Talian untuk Ulasan - dummies

Tidak ada yang salah dengan menjangkau para blogger, penulis, dan ahli komuniti dalam talian lain dan bertanya kepada mereka jika mereka berminat untuk menyemak jenama atau komuniti anda. Perbezaan antara penginjilan jenama dan melakukan kajian semula adalah bahawa penginjil jenama tidak mengkaji: Mereka mempromosikan, dan mereka diberi pampasan sebagai pertukaran untuk promosi mereka. Penilai, di ...

Cara Mengiklankan Syarikat Anda melalui Penajaan Blog - patung

Cara Mengiklankan Syarikat Anda melalui Penajaan Blog - patung

Untuk cara percikan untuk dilihat blog atau laman web, pertimbangkan menaja laman web ini. Penajaan untuk blog popular telah mendapat banyak perhatian dalam blogosphere. Sesetengah blogger menyeru menerima tajaan "menjual keluar," tetapi yang lain menganggapnya sebagai cara terbaik untuk mendapatkan bayaran untuk melakukan apa yang mereka suka. Penajaan cenderung kepada ...