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

Melindungi Metrik Media Sosial anda dengan Alat Cadangan - dummies

Melindungi Metrik Media Sosial anda dengan Alat Cadangan - dummies

Jika anda telah memulakan jejak sosial metrik media dan menikmati kurniaan data yang kini dapat dilihat, dihidupkan, dan digunakan, anda mungkin tertanya-tanya apa yang mungkin menyebabkan kemurungan! Mudah: kehilangan data. Katakanlah bahawa anda mempunyai masalah tapak atau entah bagaimana kehilangan akses ke tapak atau data anda. Adakah anda mempunyai sandaran anda ...

Laman web baru? Menarik Tumpuan Media Sosial Lalu Lintas dan Meningkat - dummies

Laman web baru? Menarik Tumpuan Media Sosial Lalu Lintas dan Meningkat - dummies

Mana-mana kempen baru, laman web, akaun Twitter, halaman Facebook, atau item lain yang anda ingin ukur dengan metrik media sosial bermula pada sifar. Nombor ini boleh membuat anda merasa seperti anda bercakap dengan tidak sah, bercakap dengan diri anda atau anda tersembunyi dari pandangan. Perasaan ini boleh membawa kepada pengasingan secara keseluruhan ...

Meracuni Google Spider - dummies

Meracuni Google Spider - dummies

Anda sentiasa dapat mencari orang yang ingin menyimpang dari lurus dan sempit. Ya, mereka adalah orang bodoh yang terlibat dalam taktik pengoptimuman berisiko yang bertujuan untuk menggerakkan PageRank secara artifisial, memanipulasi pesanan halaman hasil carian di Google, dan mendapatkan kelebihan yang tidak adil dalam indeks. Google, dengan reputasi yang luar biasa untuk melindungi, ...

Pilihan Editor

Mengukur Pengunjung Lama Menginap di Laman Web Anda - dummies

Mengukur Pengunjung Lama Menginap di Laman Web Anda - dummies

Di laman web anda memberikan wawasan yang penting. Anda boleh memikirkan sama ada pengunjung sedang melihat cepat, kemudian pergi, atau sama ada mereka bertahan lebih lama dan sebenarnya membaca bahan dalam talian anda dengan tujuan untuk mengambil tindakan. Jika majoriti pelawat laman web anda tidak ...

Pemasaran web: Cara Menilai Layouts dengan Peta Haba - dummies

Pemasaran web: Cara Menilai Layouts dengan Peta Haba - dummies

Laman web perniagaan sangat mirip dengan merancang kedai dengan pemasaran produk dalam fikiran. Malah, laman web anda benar-benar adalah kedai - kedai maya di Internet. Rangkaian kedai runcit telah menghabiskan berjuta-juta dolar dalam penyelidikan pasaran, menonton dan mendokumentasikan bagaimana pembeli memasuki kedai, belok kanan atau kiri, dan ...

Analitik web Untuk Menipu Cheat Sheet - dummies

Analitik web Untuk Menipu Cheat Sheet - dummies

Melakukan analisis laman web tidak perlu meletihkan dan intensif masa. Anda boleh meringkaskan prestasi keseluruhan laman web anda dengan cepat - jika anda tahu apa yang perlu dicari. Alat analisis web percuma dan kos rendah boleh membantu anda mengukur kejayaan laman web anda, dan anda boleh menjana perujuk tapak dengan pelbagai cara yang tidak mungkin ...

Pilihan Editor

Cara Memaksimumkan Ruang pada Laman Web - dummies

Cara Memaksimumkan Ruang pada Laman Web - dummies

Terlalu terhad, anda boleh membuat penggunaan kreatif beberapa teknologi di luar sana untuk memaksimumkan antara muka anda. Untuk setiap teknik berikut yang diterangkan, terdapat banyak laman web yang menawarkan sampel kod, forum, dan sumber untuk membantu anda memulakan. Accordions. Antara muka akordion membolehkan ...

Cara Mendapatkan Corak CSS3 Online - dummies

Cara Mendapatkan Corak CSS3 Online - dummies

Mencipta kesan mudah untuk laman CSS3 menggunakan gradien mudah . Walau bagaimanapun, mewujudkan sesuatu yang benar-benar hebat memerlukan masa dan keupayaan artistik. Kebanyakan pemaju benar-benar tidak mempunyai masa atau kemahiran yang diperlukan untuk mencipta sesuatu yang mempesonakan menggunakan CSS3 sahaja (atau CSS3 digabungkan dengan grafik) - di sinilah pereka bermain. Ramai pereka yang membolehkan anda ...

Bagaimana Mengoptimumkan Aplikasi CSS3 dengan Modernizr - dummies

Bagaimana Mengoptimumkan Aplikasi CSS3 dengan Modernizr - dummies

Terdapat banyak pelayar dan versi pelayar yang berbeza gunakan hari ini. Tidak semua daripada mereka adalah optimum untuk CSS3. Inilah tempat Modernizr dimainkan. Pemajunya menyebutnya "perpustakaan JavaScript yang mengesan ciri HTML5 dan CSS3 dalam pelayar pengguna. "Anda menggunakan Modernizr untuk melaksanakan tugas secara pilihan dan memasukkan ciri aplikasi berdasarkan ...