Dosyalama İşlemi

Rastgele erişimli bir dosyada isim ve numaraya göre arama yapan C kodunu sizlere aktarmak istiyorum.

Rastgele erişimli bir dosyada isim ve numaraya göre arama yapan C kodunu paylaşmak istiyorum.


/*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!=-1){

    fseek(oku,bulunanlar*sizeof(veri),SEEK_SET);

    fread(&veriokuyucu,sizeof(veri),1,oku);

    /*EkranaYaz(veriokuyucu);*/           //void 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

  • Etiketler;
Chosen1317 Chosen1317
Sanalkurs.net
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git