• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

Dosyalama İşlemi

Üyelik Tarihi
7 Ocak 2015
Konular
4,091
Mesajlar
4,274
MFC Puanı
40
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
 
Üst