noimage

İçeriği Paylaş:

Sıralı Erişimli Dosya İşlemleri

Sıralı Erişimli Dosya İşlemleriText dosyalar üzerinde aşağıdaki işlemler yapılabilir. Bu işlemlere örnek olarak yazılmış program bölüm sonunda verilmektedir.

  1. Kayıt Girişi
  2. Kayıt Listeleme
  3. Kayıt Silme
  4. Kayıt Arama
  5. Düzeltme

Kayıt Girişi Dosyalara kayıt girme işlemi, klavyeden veri okuma ve okunan veriyi dosyaya yazma olayıdır. Dosyaya kayıt işlemi fprintf fonksiyonu ile yapılır. Bir dosyaya veri girişi yapılmadan önce dosyanın yazma işlemine uygun modda açılmış olması gerekmektedir. Kayıt işlemleri bittikten sonra dosya daha sonra sorunsuz bir şekilde okunabilsin diye fclose fonksiyonu ile kapatılmalıdır.Kayıt ListelemeDosyadaki verilerin listelenmesi için öncelikle dosyanın okuma modunda açılması gerekir. Dosyadaki bilgilerin listelenebilmesi için programın dosya sonunu görmesi gerekmektedir. Bu işlem herhangi bir kontrol deyimi ile tespit edilebilir. Dosya sonunu tespit etmek için feof fonksiyonu kullanılır. fscanf fonksiyonu dosyadaki veriler okunarak printf fonksiyonu ile ekranda görüntülenir. Kayıt SilmeDosyalarda kayıt silme işlemi için iki farklı dosyadan bahsetmek gerekir. Yapılması gereken işlem asıl dosyanın bir kopyasının silinecek veri   olmadan   kopyalanmasıdır.   Daha   sonra   asıl   dosya      silinerek oluşturulan yeni dosyanın adı değiştirilir. Asıl dosya ʺrʺ, kopya dosya ʺaʺ       modunda       açılır.   Dosya adı değişikliği  rename fonksiyonu ile gerçekleştirilir. Kayıt AramaDosyalarda kayıt arama işlemi, istenilen kayda ulaşmak biçimindedir. Bunun için belirlenecek anahtar veri alanı ya da alanları dosyadan okunan veriler ile kıyaslanarak aranan verinin dosya da bulunup bulunmadığı tespit edilir.Kayıt DeğiştirmeDosyalardaki kayıt değiştirme işlemi önce aranılan kaydın bulunması, sonra silinmesi ve son olarak da yeni kaydın yapılması biçimindedir.Örnek: Text dosyalarla ilgili işlemler gösterilmektedir.#include <stdio.h>#include <stdlib.h>#include <conio.h> int main(){FILE *dosya;           /* dosya göstericisi */ typedef struct{char  ad[10]; int    no, Not;} ogrenci; ogrenci kisi;int numara, durum = 0; FILE *yedek;do{system(“cls”);printf(“\t\tMENU 1- Kayit Girisi2- KayitListeleme 3- Kayit Silme 4- Kayit Arama 5- Degistirme 6- Cikis Lutfen islemi seciniz:”);switch(getch()){case ‘1’: //Kayıt Girişidosya = fopen(“sinif.txt”, “w”); int i=0;if(  dosya == NULL )puts(“sinif.txt dosyasi acilmadi. !”), exit(1);puts(“Ogrencilere ait bilgileri girin:”); do {i++;fflush(stdin);printf(“%d. ogrencinin adi      : “,i); gets(kisi.ad);printf(“%d. ogrencinin numarasi: “,i); scanf(“%d”,&kisi.no);printf(“%d. ogrencinin notu     : “,i); scanf(“%d”,&kisi.Not);printf(“”); fprintf(dosya,”%d %s%d”,kisi.no,kisi.ad,kisi.Not); /* verileri formatlı yaz! */puts(“Yeni kayıt icin bir tusa, Cikmak icin esc tusuna basiniz…”);}while(getch()!=27);/* dosyayı kapat */ fclose(dosya);puts(“Bilgiler kaydedildi.\a”); getch();break; case ‘2’:dosya = fopen(“sinif.txt”, “r”); if(     dosya == NULL )puts(“sinif.txt dosyasi acilamadi. !”),exit(1);while(!feof(dosya)){fflush(stdout);fscanf(dosya,”%d %s %d”,&kisi.no, &kisi.ad, &kisi.Not);if(kisi.ad != NULL){printf(“”);printf(“%d  %s  %d”,kisi.no, kisi.ad, kisi.Not);}}fclose(dosya); getch(); break;case ‘3’:printf(“Silinecek ogrenci numarasini giriniz:”);scanf(“%d”,&numara);dosya = fopen(“sinif.txt”,”r”);yedek = fopen(“yedek.txt”,”a”);if(!dosya) printf(“Dosya acilamadi”);while(!feof(dosya)){fscanf(dosya,”%d %s %d “,&kisi.no, &kisi.ad, &kisi.Not);if(numara!=kisi.no){fprintf(yedek,”%d %s%d”,kisi.no,kisi.ad,kisi.Not);}else durum = 1;}fclose(dosya); fclose(yedek); if( durum == 1 ){tamamlandi.”);}else{}puts(“Kayit silindi”); remove(“sinif.txt”);rename(“yedek.txt”,”sinif.txt”);puts(“islem basarili bir sekildeputs(“Kayit Bulunamadi”); remove(“yedek.txt”);fflush(stdin); getch(); break;case ‘4’: fflush(stdin);printf(” ogrenci numarasini giriniz:”); scanf(“%d”,&numara);dosya = fopen(“sinif.txt”,”r”); if(!dosya) printf(“Dosya acilamadi”); durum = 1;while(!feof(dosya)){fscanf(dosya,”%d %s %d “,&kisi.no, &kisi.ad, &kisi.Not);if(numara==kisi.no){printf(“%d %s%d”,kisi.no,kisi.ad,kisi.Not);durum = 0;}}fclose(dosya); if( durum == 1 )puts(“Kayit bulunamadi”); getch();break; case ‘5’:printf(“Degisiklik yapilacak ogrenci numarasini giriniz:”);scanf(“%d”,&numara);dosya = fopen(“sinif.txt”,”r”);yedek = fopen(“yedek.txt”,”w”); if(!dosya) printf(“Dosya acilamadi”); durum =0;while(!feof(dosya)){fscanf(dosya,”%d %s %d “,&kisi.no, &kisi.ad, &kisi.Not);if(numara!=kisi.no){fprintf(yedek,”%d %s%d”,kisi.no,kisi.ad,kisi.Not);}else if(numara==kisi.no){fflush(stdin); printf(“ogrencinin adi    : “);gets(kisi.ad); printf(“ogrencinin numarasi: “); scanf(“%d”,&kisi.no); printf(“ogrencinin notu                        : “); scanf(“%d”,&kisi.Not);printf(“”); fprintf(yedek,”%d %s%d”,kisi.no,kisi.ad,kisi.Not); /* verileri formatlı yaz! */durum = 1;}}fclose(dosya); fclose(yedek); if( durum == 1 ){tamamlandi.”);}else{}puts(“Degisiklik yapildi”); remove(“sinif.txt”); rename(“yedek.txt”,”sinif.txt”); puts(“islem basarili bir sekildeputs(“Kayit Bulunamadi”); remove(“yedek.txt”);fflush(stdin); getch(); break;case ‘6’:return 0; break;default:printf(“Hatalı secim”);}}while(1); return 0;}

İçeriği Paylaş:
İlginizi Çekebilir
Yorum Yapılmamış

Henüz Hiç Yorum Yapılmadı..

Yorum Yaz

Sıralı Erişimli Dosya İşlemleri

Programlama 2

29/07/2016 | Yorum Yok | 51 | kucukakarsu