• 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.
Bu, hızlı yüklenen mobil optimize edilmiş bir AMP sayfadır, gerçek sayfayı yüklemek istiyorsanız bu metni tıklayın.

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