C Programlama Rehber Uygulaması ( Dosyaya Yazma ,Okuma ,Listeleme)



Birinin doğruyu bulmasına yardımcı olan, yol gösteren kimse veya şey, delil.Kelime anlamı budur.Biz burada ise telefon rehberi yapacağız.Bunu pointer  ,kok gibi etmenler ile yapacağız.


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
typedef struct liste
{
 int tel;
 char isim[50],soyad[50];
 struct liste *sag;
}lst;
lst *kok=NULL,*onceki=NULL,*silme=NULL;
int sayac=0;

void eklenecek(lst *root,lst *ekle)
{
 if(root==NULL)
 {
  kok=ekle;
 }
 else
 {
  if(root->sag==NULL)
  {
   root->sag=ekle;
  }
  else
  {
   eklenecek(root->sag,ekle);
  }
 }
}
void  aranacak(lst *root,int ara)
{
 if(root->tel==ara)
 {
  printf("Aradiginiz telefon numarasi bulunmustur!!!"); 
 }
 else
 {
  aranacak(root->sag,ara); 
 }
 
}
void listele(lst *root)
{
 FILE *dosya;
 if((dosya=fopen("rehber.txt","a"))==NULL)
 {
  printf("Dosya acilamamistir!!");
 }
 
 
 if(root==NULL)
 {
  printf("Listelenecek eleman bulunamamistir!\n");
 }
 else
 {
  if(root!=NULL)
  {
   printf("%s\n",root->isim);
   printf("%s\n",root->soyad);
   printf("%d\n",root->tel);
   fprintf(dosya,"%s ,%s,%d\n",root->isim,root->soyad,root->tel);
   listele(root->sag);
  }
 }
}
void silinecek(lst *root,int sil)
{
 
 
 if(root->tel!=sil && root!=NULL)
 {
  onceki=root;
  sayac++;
  silinecek(root->sag,sil); 
 }
 else
 {
  if(root->tel==sil &&  sayac==0)
  {
   silme=kok;
   kok=kok->sag;
   free(silme);
  }
  else if(root->tel==sil && sayac>0)
  {
   silme=root;
   onceki->sag=root->sag;
   free(silme);
  }
  else if(root->tel==sil && root->sag==NULL)
  { silme=root;
   free(silme);
   root=onceki;
   root->sag==NULL;
   
  }
 }
}
int main()
{
 system("color 5a");
 lst *ekle,*deger;
 int secenek;
 int ara,sil;
 int cikmak;
 
 do
 {
 geri:
 printf("Rehbere eklemek icin --1\nRehberde arama yapmak için --2\nRehberi listelemek için--3\nRehberden silmek icin--4\nRehberden cikmak icin--5\n basiniz..\n");
 scanf("%d",&secenek);
 switch(secenek)
 {
  case 1:
  ekle=(lst*)malloc(sizeof(lst));
  if(ekle==NULL)
  {
   printf("Ramde eklenecek alan kalmamistir..\n");
  }
  printf("Adini giriniz..\n");
  scanf("%s",ekle->isim);
  printf("Soyadini giriniz...\n");
  scanf("%s",ekle->soyad);
  printf("Telefon numarasini girniz..\n");
  scanf("%d",&ekle->tel);
  ekle->sag=NULL;
  eklenecek(kok,ekle);
  break;
  case 2:
  printf("Aranacak tel numarasini giriniz...\n");
  scanf("%d",&ara);
  if(kok==NULL)
  {
   printf("Rehber bostur..\n");
  }
  else
  {
   aranacak(kok,ara); 
  }
  break;
  case 3:
  listele(kok);
  break;
  case 4:
  printf("Silinecek kaydin tel numarasini giriniz.");
  scanf("%d",&sil);
  if(kok==NULL)
  {
   printf("Silinecek eleman bulunamamistir..\n");
  }
  else
  silinecek(kok,sil);
  break;
  case 5:
  system("CLS");
  exit(0);
  break;
  default:
  printf("Hatali secim yapdiniz...\n");
  goto geri;
 }
 printf("Cikmak icin -1 basiniz..\n");
 scanf("%d",&cikmak);
 }while(cikmak!=-1);
 system("pause");
 return 0; 
} 


Yorum Gönder

0 Yorumlar