Ev Kişisel Finans C Programlama: Rasgele Saklamada Saklanan Dosyalara Nasıl Erişilir

C Programlama: Rasgele Saklamada Saklanan Dosyalara Nasıl Erişilir

İçindekiler:

Video: Bilgisayar İçerisindeki Kayıtlı Şifrelerin Tamamını Ele Geçirmek 2025

Video: Bilgisayar İçerisindeki Kayıtlı Şifrelerin Tamamını Ele Geçirmek 2025
Anonim

C programlamasındaki rasgele dosya erişimi, rasgele sayılarla hiçbir ilgisi yoktur. Aksine, dosyaya herhangi bir noktada erişilebilir, burada, hatta ya da yon. Bu tür erişim, dosya aynı boyuttaki kayıtlarla noktalı olduğunda en iyi sonucu verir. Kayıtlar kavramı, kolayca bir dosyaya yazılabilir ve daha sonra tek tek, seçici olarak veya hepsini aynı anda geri getirilebilen yapılar getirir.

Programınız bir dosyadan veri okurken, dosyadaki veriler nereden okunduğunu takip eder. Bir imleç konumu, kodun okunması veya bir dosyanın içine yazılma konumu kaybolmaması için korunur.

Bir dosyayı ilk açtıktan sonra, imleç konumu dosyanın başında, ilk bayta gelir. 40 baytlık bir kaydı belleğe okursanız, imleç konumu baştan itibaren 40 bayttır. Dosyanın sonuna kadar okursanız, imleç konumu da bu konumu korur.

İşleri karıştırmak için imleç konumuna bir işaretçi değişkeni veya bir FILE türü işaretçi olmasa da genellikle dosya işaretçisi , olarak geçilir. Burası, bir sonraki verinin okunduğu bir dosyanın içindeki yerdir.

C'de ilginç işlevler kullanarak imleç konumunu bozabilirsiniz. İkisi ftell () ve geri sar () 'dır. Ftell () işlevi, uzun bir int değeri olarak kaydırılmış geçerli imleç konumunu döndürür. Rewind () işlevi, imleci dosyanın başına geri getirir.

Tell ve Rewind'deki while döngüsü, bağdaki kayıtları okur. db dosyası. Satır 28'de, ftell () işlevi imleç konumunu döndürür. Bir girişten büyükse (ikinci girişin okunduğu anlamına gelir), imleç konumu 29 Satırdaki rewind () işlevi tarafından dosyanın başına sıfırlanır.

TELL AND REWIND

#include # include #include int main () {yapı girişi {char actor [32]; int yıl; char title [32];}; yapı giriş bağı; DOSYA * a007; int sayısı = 0; a007 = fopen ("bağ. db", "r"); if (! a007) {puts ("SPECTER wins!"); çıkış (1);} while (fread (& bond, sizeof (yapı girişi), 1, a007)) {printf ("% st% dt% sn", tahvil oyuncusu, tahvil, yıl tahvil, başlık); if (ftell (a007)> sizeof (yapı girişi)) geri sar (a007); ++ saymak; if (count> 10) break;} fclose (a007); Uygun kaydırmayı belirlemek için, if ifadesi, yapı girişinde ftell () işlevinin ve sizeof operatörünün sonucunu karşılaştırır. Ftell () işlevinin yalnızca uzun int değerini döndürdüğünü, belirli sayıda yapı döndürmediğini unutmayın.

Hat 14'de bildirilen ve başlatılan değişken sayısı, while döngüsünün kaç kez tekrarlanacağını tutar. Aksi takdirde program kaybolmazdı. Bu kötü. Böylece, count değeri 10'dan büyük olduğunda, döngü kesilir ve dosya kapanır ve program sona erer.

Egzersiz

1 : Tell ve Rewind kaynak kodunu editörünüze yazın. Ftell () ve rewind () işlevlerinin nasıl çalıştığını görmek için kurun ve çalıştırın. Belirli bir kayıt nasıl bulunur?

Bir dosya aynı boyuttaki kayıtları içerdiğinde, herhangi bir öğeyi çıkarmak için fseek () işlevini kullanabilirsiniz. Fseek () için biçim

fseek (handle, offset, whence);


işleci, bir dosya tanıtıcısı, okunması için açık bir dosyayı temsil eden bir FILE işaretçisidir. ofset , bir dosyadaki başlangıç, bitiş veya geçerli konumdan itibaren bayt sayısıdır. Ve nereden üç sabitlerden biridir: SEEK_SET, SEEK_CUR veya SEEK_END sırasıyla bir dosyanın başlangıcı, mevcut konumu veya sonudur. Dosyanız sabit bir boyuttaki kayıtları içerdiği sürece, Dosya İçinde Belirli Bir Kayıt Bul bölümünde gösterildiği gibi, herhangi bir spesifik kaydı çıkarmak için fseek () kullanabilirsiniz.

BİR DOSYADA ÖZEL KAYIT BULMA

#include #include #include int main () {yapı girişi {char actor [32]; int yıl; char title [32];}; yapı giriş bağı; DOSYA * a007; a007 = fopen ("bağ. db", "r"); if (! a007) {puts ("SPECTER wins!"); exit (1);} fseek (a007, sizeof (yapı girişi) * 1, SEEK_SET); fread (& bond, sizeof (yapı girişi), 1, a007); printf ("% st% dt% sn", tahvil oyuncusu, tahvil, yıl, tahvil başlığı); fclose (a007); Bir Dosyada Belirli Bir Dosyayı Bulma bölümünde gösterilen kod yine 22-9'da listelenen koda benzemektedir. Büyük ekleme, Satır 21'de gösterilen fseek () işlevidir. İzleyen fread () işlevi (Satır 22'ye bakın), veritabanında bulunan belirli bir kaydı okur şekilde imleç konumunu ayarlar.

Satır 21'de fseek () işlevi, a007 işleci tarafından temsil edilen dosyayı inceler. Ofset, giriş yapısının boyutuyla çarpılarak hesaplanır.

Bir dizideki gibi, bu boyutu 1 ile çarpmak, dosyadaki

ikinci

kaydını verir; İlk kaydı okumak için değeri 0 ile çarpın (veya işlevde sadece 0'yı belirtin). SEEK_SET sabiti, fseek () dosyasının başlangıcından başlamasını sağlar. Kodun net etkisi, bağdaki ikinci kaydın olmasıdır. db dosyası görüntülenir. Alıştırma 2:

Dosyaya Özel Bir Kayıt Bulma'ndaki kaynak kodunu yazın. Dosyadaki ikinci kaydı görmek için kurun ve çalıştırın.

C Programlama: Rasgele Saklamada Saklanan Dosyalara Nasıl Erişilir

Editörün Seçimi

Genişletme Bağlantılar ve Bina Robotları için Pinouts - mankenler

Genişletme Bağlantılar ve Bina Robotları için Pinouts - mankenler

Eğer bir robot inşa ediyorsanız, çok sayıda elektrik bağlantısı, bu yüzden çok sayıda iğne ile uğraşıyorsunuz. Aşağıdaki tabloda, genişleme konektörleri ve pim numaraları için sinyal gösterilmektedir. İstenmeyen çapraz bağlantıları önlemeye yardımcı olabilir. Genişletme Konnektörü Pin Numarası Sinyal Genleşmesi Konnektör Pin Numarası Sinyal 1, 2 Toprak 16 P11 Yeşil LED 3, 4 + 5 ...

Dizinler içeren Kablosuz Erişim Noktalarını bulma - mankenler

Dizinler içeren Kablosuz Erişim Noktalarını bulma - mankenler

Sıcak noktaları bulma konusunda çevrimiçi dizinler, gezinmek için mükemmel bir araçtır. ABD, Kanada ve dünyadaki artan sayıda sıcak nokta. Size kolaylık sağlamak için, bu dizinlerden bazıları. Dizin Notları JiWire WiFi Bulucu 144 ülkede ücretsiz ve ücretli Wi-Fi yerleri dizini sağlar. AT & T ...

Ham Radyoda genel Sınıf Frekans Ayrıcalıkları - mankenler

Ham Radyoda genel Sınıf Frekans Ayrıcalıkları - mankenler

Yakında yapmadıysanız, siz Yükseltmeyi düşünüyorum. Aşağıdaki tabloda gösterildiği gibi, yüksek frekanslı (HF) bantlarda kullanmak için daha fazla frekansa sahipsiniz. Tüm lisans sınıfları için ABD frekansı ve mod ayrıcalıklarının eksiksiz bir listesi, Amerikan Radyo Röle Ligi'nden (ARRL) edinilebilir. Bant Frekansları ...

Editörün Seçimi

Adobe Flash CS6'da Maske Katmanlarını Kullanma - mankenler

Adobe Flash CS6'da Maske Katmanlarını Kullanma - mankenler

Adobe Flash CS6'da maskeleme kavramı Bir parçanın bölümlerini gizlemek ya da ortaya çıkarmak için bir şekli (ya da şekilleri) kullanır - tıpkı evinizdeki küçük bir pencere aracılığıyla dışarıdan bakmak gibi. Pencere boyutu, içerideyken görebileceğiniz şeyi sınırlar. Flash, özel bir katman özelliklerine sahiptir ...

Flash CS5 3D Rotasyon Aletinin Kullanımı - mankenler

Flash CS5 3D Rotasyon Aletinin Kullanımı - mankenler

Adobe'nin kapsamlı çizim ve animasyon yetenekleri Flash Creative Suite 5, Flash'ın 3D Döndürme aracıyla büyük ölçüde geliştirilebilir. 3B Döndürme aracı, sembolü x, y ve z eksenleri etrafında döndürmek ve dönüştürmek için herhangi bir film klibi örneğinde kullanılabilir. Bir film klibi örneğini 3D olarak oluşturmak için bunları izleyin ...

Flash CS5 3D Çeviri Aletini Kullanma - aumlalar

Flash CS5 3D Çeviri Aletini Kullanma - aumlalar

In 3D Döndürme aracının aksine Flash CS5 film kliplerini bir eksen etrafında döndüren Adobe Flash Creative Suite 5, 3D Çeviri aracı, bir film klibini algılanan mesafeyi ve sahnedeki diğer nesnelere göre derinliğini değiştirmek için belirli bir eksende kaydırır. Bu kavramı üçlü düşünün ...

Editörün Seçimi

Pratik İlköğretim Sınavı-Grafik Çözümleri - mankenler

Pratik İlköğretim Sınavı-Grafik Çözümleri - mankenler

Praxis İlköğretim sınavının Matematik bölümü bir dizi çizgide bir eşitsizliğe çözüm bulmanızı gerektiren bir soru. Başlamak için, çözümdeki sayıya bir nokta koyarsınız. Sembolü> veya

Pratik İlk Öğretim Sınavı-Ölüm Şekilleri - mankenler

Pratik İlk Öğretim Sınavı-Ölüm Şekilleri - mankenler

Praxis İlköğretim Matematik ve Bilim bölümleri Eğitim sınavı, farklı ölçme şekillerine aşina olmanız gereken sorular içerir. Ölçümler, çeşitli tiplerde tanımlanabilir. Mesafe için İngilizce sistem birimleri inç, feet, metre ve mil içerir. Bunlar birbirine dayanır. Bir ayak 12 ...

Pratik İlk Öğretim Sınavı-Akıcılık - mankenler

Pratik İlk Öğretim Sınavı-Akıcılık - mankenler

Praxis İlköğretim sınavı, yardımcı stratejilerinizi test eden sorular içerir öğrenciler akıcılıklarını İngilizce olarak geliştirirler. Bu stratejiler, grafik düzenleyicileri kullanarak ve çıkarımlar yapmayı içerebilir. Akıcı bir okuyucu, sınıf düzeyinde bir metni doğruluk, çabukluk ve ifade ile okuyabilir.