Neler yeni
Türkiye'nin En Güncel Forum Sitesi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

Dosyalama İşlemi

ByOnur58

Kayıtlı Üye
MFC Üyesi
  • Üyelik Tarihi
    7 Ocak 2015
  • Mesajlar
    2,113
  • MFC Puanı
    10
  • MFC Seviyesi

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 Alt