Dosyalama İşlemi

Kurtbeyi

Misafir Editör
Katılım
5 Şubat 2022
Mesajlar
501
Tepkime puanı
44
Konum
istanbul
Cinsiyet
  1. Bay
Takım
Fenerbahçe
Kod:
/*rastgele erişimli bir dosyada isim ve numaraya göre arama yapan c kodu*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define Boyut 5000 //girilecek kayıt sayısına göre düzenlenebilir
typedef struct _veri{
        int No;
        char Ad[30];
        char Soyad[30];
        long int TC;
        bool Durum;
}veri;

int main(){
 FILE *oku;
 if((oku=fopen("kayit.dat","r+"))==NULL)   //dosyayı okuma ve yazma modunda açar
 { 
    printf("Dosya Acilamadin");
    getch();
    return 0;   
 }
 else
 {
    /*ara fonksiyonu başı*/
    int secim,kno,bulunanlar[Boyut]={-1};
    char kad[30];
    veri veriokuyucu = {0,"","",0,true};
    do{
    printf("1-No'ya gore araman2-Isme gore araman:?");
    scanf("%d",&secim);
    }while(!(secim==1 || secim==2));
    switch(secim){
    case 1:
         printf("Kullanici numarasini giriniz: ");
         scanf("%d",&kno);
         for(int i=0,k=0;i<Boyut;k++,i++){//dosyadaki bütün kayıtlara tek tek bakarak arama yapar
         fseek(oku,i*sizeof(veri),SEEK_SET);
         fread(&veriokuyucu,sizeof(veri),1,oku);
         if(veriokuyucu.No == kno) 
         bulunanlar[k]=i;   //bulunan kaydın sıra numarasını bulunanlar dizisine kaydeder
         }                  //sonradan bunları teker teker yazdırmak için sıra numarasına bakar
    break;
    case 2:
         printf("Kullanici adini giriniz: ");
         scanf("%s",&kad);
         for(int i=0,k=0;i<Boyut;k++,i++){
         fseek(oku,i*sizeof(veri),SEEK_SET);
         fread(&veriokuyucu,sizeof(veri),1,oku);
         if(strstr(veriokuyucu.Ad,kad)!=NULL)  //ikinci stringin ilk stringde olup olmadığını
         bulunanlar[k]=i;                      //kontrol eder yoksa NULL değer döndürür.
         }
    break;
    }
    if(bulunanlar[0]==-1)
    printf("Aranilan kriterlere uygun kayit bulunamadi...n");
    else
    for(int i=0;i<Boyut;i++){ //bulunan kayıtları ekrana yazdırma
    if(bulunanlar[i]!=-1){
    fseek(oku,bulunanlar[i]*sizeof(veri),SEEK_SET);
    fread(&veriokuyucu,sizeof(veri),1,oku);
    /*EkranaYaz(veriokuyucu);*/           //**** EkranaYaz(veri); prototipinde tanımlı olduğu varsayılır
    }
    }
    /*ara fonksiyonu sonu*/
    
    getch();
    return 0;
 }//else'in kırlangıç parantezi
}//main'in kırlangıç parantezi
 

Benzer konular

İçerik sağlayıcı "paylaşım" sitelerinden biri olan Harbimekan.Com Forum, Eğlence ve Güncel Paylaşım Platformu Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. Harbimekan.Com sitesindeki konular yada mesajlar hakkında yapılacak tüm hukuksal Şikayetler için info@harbimekan.com yada iletişim sayfası üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 3 Gün (72 Saat) içerisinde Forum yönetimi olarak tarafımızdan gereken işlemler yapılacaktır.

Bu Site, Bilim ve Sağlık Haber Ajansı Üyesidir.

Yığıntı - 8kez - kaynak mağazam - Uğur Ağdaş