Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Yapısal Programlama (C) - Ders 11



  May 06, 2015    Labels:,,,,, 

Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü yapısal programlama(C) ders notlarım.

#include <stdio.h>
#include <stdlib.h>

struct Personel
{
    int perno;
    int ad[15];
    int soyad[20];
};

int main()
{
    struct Personel kayit;
    FILE *dosya;

    //binart bir dosya sonuna eklenecek sekilde aciliyor : ab
    dosya = fopen("personel.bin","ab");  // a olmassa sonuna yazmaz siler yeni açar b olmazsa komple struct içindekileri bir kerette yazıp bir kerette okuyamazdık

    int secim = 1;
    while(secim != 0)
    {
        printf("Personel no : "); scanf("%d", &kayit.perno);
        printf("Ad          : "); scanf("%s", kayit.ad);
        printf("Soyad       : "); scanf("%s", kayit.soyad);

        fwrite(&kayit, sizeof(kayit),1,dosya);

        printf("\nDevam (H=0/E=1)\n");
        scanf("%d",&secim);

        if(secim==0)
            break;
    }

    fclose(dosya);
    //sadece okuma yapacağımız için r olduğu için sadece okuma modunda açılır b olduğu için binary olarak açılır
    if((dosya = fopen("personel.bin", "rb"))==NULL)     //eğer dosyayı açtıysa 1 değeri döndürür açamadıysa null döndürür
        printf("Dosya acma hatasi!!!");

    while(1)
    {
        fread(&kayit, sizeof(kayit),1,dosya);  // adres , kayit kadar oku , 1 kayıt oku , dosyadan oku
        if(feof(dosya)) break;  //kayitlar bitene kadar okuması için
        printf("%5d %-15s %-20s\n", kayit.perno,kayit.ad,kayit.soyad);
    }

    fclose(dosya);

    int x;
    printf("\n Personel no girin : ");
    scanf("%d",&x);

    //Sadece okuma modunda binary dosya acma : rb

    dosya = fopen("personel.bin","rb");

    if(dosya==NULL)
    {
        printf("\n Dosya acma hatasi!!!");
        return 0;
    }

    fseek(dosya,(x-1)*sizeof(kayit),SEEK_SET);   //dosya üzerinde atlama ve rasgele erişim için kullanıyoruz  //SEEK SET EN BAŞTAN BAŞLAYARAK OKUYOR

    if(fread(&kayit,sizeof(kayit),1,dosya)==1)
    {
        printf("\n Kayitli Personel adi = ");
        printf("%s\n",kayit.ad);
    }
    fclose(dosya);

    return 0;
}


---------------------------------------------------------------------------------------------------------


#include <stdio.h>
#include <stdlib.h>

struct Personel
{
    int perno;
    int ad[15];
    int soyad[20];
};

int main()
{
    struct Personel kayit;
    FILE *dosya1;
    FILE *dosya2;


    dosya1 = fopen("personel1.bin","ab");
    dosya2 = fopen("personel2.bin","ab");

    int secim = 1;
    int i;
    int sira = 1;
    for(i=1;i<=100;i=i+2)
    {
        if(sira == 1)
        {
            kayit.perno = i ;
            printf("Ad          : "); scanf("%s", kayit.ad);
            printf("Soyad       : "); scanf("%s", kayit.soyad);

            fwrite(&kayit, sizeof(kayit),1,dosya1);

            printf("\nDevam (H=0/E=1)\n");
            scanf("%d",&secim);
            sira = 2;

            if(secim==0)
                break;
        }
        else if(sira ==2)
        {
            kayit.perno = i+1;
            printf("Ad          : "); scanf("%s", kayit.ad);
            printf("Soyad       : "); scanf("%s", kayit.soyad);

            fwrite(&kayit, sizeof(kayit),1,dosya2);

            printf("\nDevam (H=0/E=1)\n");
            scanf("%d",&secim);
            sira = 1;

            if(secim==0)
                break;
        }
    }

    fclose(dosya1);
    fclose(dosya2);

    if((dosya1 = fopen("personel1.bin", "rb"))==NULL)
        printf("Dosya acma hatasi!!!");
    if((dosya2 = fopen("personel2.bin", "rb"))==NULL)
        printf("Dosya acma hatasi!!!");

    int x;
    printf("\n Personel no girin : ");
    scanf("%d",&x);

    if(x%2==0)
    {
        fseek(dosya2,((x/2)-1)*sizeof(kayit),SEEK_SET);
        if(fread(&kayit,sizeof(kayit),1,dosya2)==1)
        {
            printf("\n Kayitli Personel adi = ");
            printf("%s\n",kayit.ad);
        }
    }
    else
    {
        fseek(dosya1,(x/2)*sizeof(kayit),SEEK_SET);
        if(fread(&kayit,sizeof(kayit),1,dosya1)==1)
        {
            printf("\n Kayitli Personel adi = ");
            printf("%s\n",kayit.ad);
        }
    }

    fclose(dosya1);
    fclose(dosya2);

    return 0;
}


No comments:

Post a Comment