C File handling demo

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üye
Katılım
17 Şub 2018
Mesajlar
31
Tepki puanı
7
Ödüller
6
Sosyal
8 HİZMET YILI
Hello, this demo shows you lots of example. Have fun!


It contains :
printf("\n1 Create");
printf("\n2 Display");
printf("\n3 Append");
printf("\n4 Number of records");
printf("\n5 Search");
printf("\n6 Update");
printf("\n7 Delete");
printf("\n8 Sort total on screen");
printf("\n9 Sort Total in File");
printf("\n10 Sort name on screen");
printf("\n0 Exit");

Source :
C:
#include <stdio.h>
#include <stdlib.h>



typedef struct student
{
    int rno;
    char name[20];
    struct subject
    {
        int scode;
        char sname[20];
        int mark;
    }sub[3];
    int total;
    float per;

} student;

void create()
{
    student* _student;
    FILE* fp;
    int n, i, j;
    printf("Enter how many students you want : ");
    scanf("%d", &n);

    _student = (student*)calloc(n, sizeof(student));
    fp = fopen("mystudents.txt", "w");

    for (i = 0; i < n; i++)
    {
        _student[i].total = 0;
        _student[i].per = 0;
        printf("Enter Roll number: ");
        scanf("%d", &_student[i]);
        fflush(stdin);
        printf("Enter name : ");
        scanf("%[^\n]s", &_student[i].name);
        for (j = 0; j < 3; j++)
        {
            printf("Enter marks of subject : %d", j + 1);
            scanf("%d", &_student[i].sub[j].mark);
            _student[i].total += _student[i].sub[j].mark;
        }
        _student[i].per = _student[i].total / 3.0;
        fwrite(&_student[i], sizeof(student), 1, fp);
    }
    fclose(fp);



}
void display()
{
    student _student;
    FILE* fp;
    fp = fopen("mystudents.txt", "r");

    while (fread(&_student, sizeof(student), 1, fp))
    {
        printf("\n%-5d%-20s ", _student.rno, _student.name);
        for (int j = 0; j < 3; j++)
        {
            printf("%4d", _student.sub[j].mark);
        }
        printf("%5d%7.2f", _student.total, _student.per);

    }
    fclose(fp);


}
void append()
{
    student* _student = NULL;
    FILE* fp;
    int n, i, j;
    printf("Enter how many students you want : ");
    scanf("%d", &n);

    _student = (student*)calloc(n, sizeof(student));
    fp = fopen("mystudents.txt", "a");

    for (i = 0; i < n; i++)
    {
        _student[i].total = 0;
        _student[i].per = 0;
        printf("Enter Roll number: ");
        scanf("%d", &_student[i]);
        fflush(stdin);
        printf("Enter name : ");
        scanf("%[^\n]s", _student[i].name);
        for (j = 0; j < 3; j++)
        {
            printf("Enter marks of subject : %d", j + 1);
            scanf("%d", &_student[i].sub[j].mark);
            _student[i].total += _student[i].sub[j].mark;
        }
        _student[i].per = _student[i].total / 3.0;
        fwrite(&_student[i], sizeof(student), 1, fp);
    }
    fclose(fp);



}

void numofrecord()
{
    student _student;
    FILE* fp;
    fp = fopen("mystudents.txt", "r");
    fseek(fp, 0, SEEK_END); // dosya sonuna kadar bak.
    int n = ftell(fp) / sizeof(student);
    printf("\n\n number of records = %d", n);
    fclose(fp);
}
void search()
{
    student _student;
    FILE* fp;
    int j, rno, found = 0;
    fp = fopen("mystudents.txt", "r");
    printf("Enter roll number to search : ");
    scanf("%d", &rno);
    while (fread(&_student, sizeof(student), 1, fp))
    {
        if (_student.rno == rno)
        {
            found = 1;
            printf("\n%-5d%-20s", _student.rno, _student.name);
            for (j = 0; j < 3; j++)
                printf("%4d", _student.sub[j].mark);

            printf("%5d%7.2f", _student.total, _student.per);
        }
    }
    if (!found)
        printf("\n Record not found\n");

    fclose(fp);

}
void update()
{
    student _student;
    FILE* fp, * fp1;
    int j, rno, found = 0;
    fp = fopen("mystudents.txt", "r");
    fp1 = fopen("temp.txt", "w");
    printf("Enter roll number to update : ");
    scanf("%d", &rno);

    while (fread(&_student, sizeof(student), 1, fp))
    {
        if (_student.rno == rno)
        {
            _student.total = 0;
            _student.per = 0;
            found = 1;
            fflush(stdin);
            printf("Enter new name : ");
            scanf("%[^\n]s", _student.name);
            for (j = 0; j < 3; j++)
            {
                printf("Enter new marks of subject %d : ", j + 1);
                scanf("%d", &_student.sub[j].mark);
                _student.total += _student.sub[j].mark;
            }
            _student.per = _student.total / 3.0;
        }
        fwrite(&_student, sizeof(student), 1, fp1);
    }
    fclose(fp);
    fclose(fp1);
    if (found)
    {
        fp1 = fopen("temp.txt", "r");
        fp = fopen("mystudents.txt", "w");

        while (fread(&_student, sizeof(student), 1, fp1))
        {
            fwrite(&_student, sizeof(student), 1, fp);
        }
        fclose(fp);
        fclose(fp1);

    }
    else
    {
        printf("\nRecord not found\n");
    }

}

void delete_rec()
{
    student _student;
    FILE* fp, * fp1;
    int j, rno, found = 0;
    fp = fopen("mystudents.txt", "r");
    fp1 = fopen("temp.txt", "w");
    printf("Enter roll number to delete : ");
    scanf("%d", &rno);

    while (fread(&_student, sizeof(student), 1, fp))
    {
        if (_student.rno == rno)
        {
            found = 1;
        
        }
        else
        {
            fwrite(&_student, sizeof(student), 1, fp1);
        }
        
        
    }
    fclose(fp);
    fclose(fp1);
    if (found)
    {
        fp1 = fopen("temp.txt", "r");
        fp = fopen("mystudents.txt", "w");

        while (fread(&_student, sizeof(student), 1, fp1))
        {
            fwrite(&_student, sizeof(student), 1, fp);
        }
        fclose(fp);
        fclose(fp1);

    }
    else
    {
        printf("\nRecord not found\n");
    }

}

void sortTotalOnScreen()
{
    student *_student, _studentTemp;
    FILE *fp = fopen("mystudents.txt","r");
    fseek(fp,0,SEEK_END); //baştan sona kadar git
    int n = ftell(fp) / sizeof(student); // Eleman sayısını al
    _student=(student*)calloc(n,sizeof(student));


    rewind(fp); // imleci dosya başına al.
    for(int i=0;i<n;i++)
    fread(&_student[i],sizeof(student),1,fp);

    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(_student[i].total < _student[j].total)
            {
                _studentTemp = _student[i];
                _student[i] = _student[j];
                _student[j] = _studentTemp;

            }
        }
    }

    for(int i = 0; i < n;i++)
    {
        printf("\n%-5d%-20s",_student[i].rno,_student[i].name);
        for(int j = 0; j < 3;j++)
            printf("%4d",_student[i].sub[j].mark);

            printf("%5d%7.2f",_student[i].total,_student[i].per);

    }

    fclose(fp);

}
void sortTotalInFile()
{
    student *_student, _studentTemp;
    FILE *fp = fopen("mystudents.txt","r");
    fseek(fp,0,SEEK_END); //baştan sona kadar git
    int n = ftell(fp) / sizeof(student); // Eleman sayısını al
    _student=(student*)calloc(n,sizeof(student));


    rewind(fp); // imleci dosya başına al.
    for(int i=0;i<n;i++)
    fread(&_student[i],sizeof(student),1,fp);
    fclose(fp);

    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(_student[i].total < _student[j].total)
            {
                _studentTemp = _student[i];
                _student[i] = _student[j];
                _student[j] = _studentTemp;

            }
        }
    }
    fp=fopen("mystudents.txt","w");


    for(int i = 0; i < n;i++)
    {
        printf("\n%-5d%-20s",_student[i].rno,_student[i].name);
        for(int j = 0; j < 3;j++)
            printf("%4d",_student[i].sub[j].mark);

            printf("%5d%7.2f",_student[i].total,_student[i].per);
            fwrite(&_student,sizeof(student),1,fp);

    }

    fclose(fp);


}
void sortNameOnScreen()
{
    student *_student, _studentTemp;
    FILE *fp = fopen("mystudents.txt","r");
    fseek(fp,0,SEEK_END); //baştan sona kadar git
    int n = ftell(fp) / sizeof(student); // Eleman sayısını al
    _student=(student*)calloc(n,sizeof(student));


    rewind(fp); // imleci dosya başına al.
    for(int i=0;i<n;i++)
    fread(&_student[i],sizeof(student),1,fp);

    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(strcmp(_student[i].name < _student[j].name) > 0 )
            {
                _studentTemp = _student[i];
                _student[i] = _student[j];
                _student[j] = _studentTemp;

            }
        }
    }

    for(int i = 0; i < n;i++)
    {
        printf("\n%-5d%-20s",_student[i].rno,_student[i].name);
        for(int j = 0; j < 3;j++)
            printf("%4d",_student[i].sub[j].mark);

            printf("%5d%7.2f",_student[i].total,_student[i].per);

    }

    fclose(fp);

}


int main(int argc, char const* argv[])
{

    int ch;

    do
    {
        printf("\n1 Create");
        printf("\n2 Display");
        printf("\n3 Append");
        printf("\n4 Number of records");
        printf("\n5 Search");
        printf("\n6 Update");
        printf("\n7 Delete");
        printf("\n8 Sort total on screen");
        printf("\n9 Sort Total in File");
        printf("\n10 Sort name on screen");
        printf("\n0 Exit");

        printf("\nEnter your choice : ");
        scanf("%d", &ch);

        switch (ch)
        {
        case 1:
            create();
            break;
        case 2:
            display();
            break;
        case 3:
            append();
            break;
        case 4:
            numofrecord();
            break;
        case 5:
            search();
            break;
        case 6:
            update();
            break;
        case 7:
            delete_rec();
            break;
            case 8:
            sortTotalOnScreen();
            break;
            case 9:
            sortTotalInFile();
            break;
            case 10:
            sortNameOnScreen();
            break;
        case 0:
            exit(1);
            break;

        default:
            printf("Type a valid number :");
            break;
        }

    } while (ch != 0);



    return 0;
}
 
ERROR PROBLEM FIXER
Support
Katılım
25 Eyl 2018
Mesajlar
5,366
Çözümler
1,450
Tepki puanı
2,351
Ödüller
20
Sosyal
7 HİZMET YILI
Hello, this demo shows you lots of example. Have fun!


It contains :
printf("\n1 Create");
printf("\n2 Display");
printf("\n3 Append");
printf("\n4 Number of records");
printf("\n5 Search");
printf("\n6 Update");
printf("\n7 Delete");
printf("\n8 Sort total on screen");
printf("\n9 Sort Total in File");
printf("\n10 Sort name on screen");
printf("\n0 Exit");

Source :
C:
#include <stdio.h>
#include <stdlib.h>



typedef struct student
{
    int rno;
    char name[20];
    struct subject
    {
        int scode;
        char sname[20];
        int mark;
    }sub[3];
    int total;
    float per;

} student;

void create()
{
    student* _student;
    FILE* fp;
    int n, i, j;
    printf("Enter how many students you want : ");
    scanf("%d", &n);

    _student = (student*)calloc(n, sizeof(student));
    fp = fopen("mystudents.txt", "w");

    for (i = 0; i < n; i++)
    {
        _student[i].total = 0;
        _student[i].per = 0;
        printf("Enter Roll number: ");
        scanf("%d", &_student[i]);
        fflush(stdin);
        printf("Enter name : ");
        scanf("%[^\n]s", &_student[i].name);
        for (j = 0; j < 3; j++)
        {
            printf("Enter marks of subject : %d", j + 1);
            scanf("%d", &_student[i].sub[j].mark);
            _student[i].total += _student[i].sub[j].mark;
        }
        _student[i].per = _student[i].total / 3.0;
        fwrite(&_student[i], sizeof(student), 1, fp);
    }
    fclose(fp);



}
void display()
{
    student _student;
    FILE* fp;
    fp = fopen("mystudents.txt", "r");

    while (fread(&_student, sizeof(student), 1, fp))
    {
        printf("\n%-5d%-20s ", _student.rno, _student.name);
        for (int j = 0; j < 3; j++)
        {
            printf("%4d", _student.sub[j].mark);
        }
        printf("%5d%7.2f", _student.total, _student.per);

    }
    fclose(fp);


}
void append()
{
    student* _student = NULL;
    FILE* fp;
    int n, i, j;
    printf("Enter how many students you want : ");
    scanf("%d", &n);

    _student = (student*)calloc(n, sizeof(student));
    fp = fopen("mystudents.txt", "a");

    for (i = 0; i < n; i++)
    {
        _student[i].total = 0;
        _student[i].per = 0;
        printf("Enter Roll number: ");
        scanf("%d", &_student[i]);
        fflush(stdin);
        printf("Enter name : ");
        scanf("%[^\n]s", _student[i].name);
        for (j = 0; j < 3; j++)
        {
            printf("Enter marks of subject : %d", j + 1);
            scanf("%d", &_student[i].sub[j].mark);
            _student[i].total += _student[i].sub[j].mark;
        }
        _student[i].per = _student[i].total / 3.0;
        fwrite(&_student[i], sizeof(student), 1, fp);
    }
    fclose(fp);



}

void numofrecord()
{
    student _student;
    FILE* fp;
    fp = fopen("mystudents.txt", "r");
    fseek(fp, 0, SEEK_END); // dosya sonuna kadar bak.
    int n = ftell(fp) / sizeof(student);
    printf("\n\n number of records = %d", n);
    fclose(fp);
}
void search()
{
    student _student;
    FILE* fp;
    int j, rno, found = 0;
    fp = fopen("mystudents.txt", "r");
    printf("Enter roll number to search : ");
    scanf("%d", &rno);
    while (fread(&_student, sizeof(student), 1, fp))
    {
        if (_student.rno == rno)
        {
            found = 1;
            printf("\n%-5d%-20s", _student.rno, _student.name);
            for (j = 0; j < 3; j++)
                printf("%4d", _student.sub[j].mark);

            printf("%5d%7.2f", _student.total, _student.per);
        }
    }
    if (!found)
        printf("\n Record not found\n");

    fclose(fp);

}
void update()
{
    student _student;
    FILE* fp, * fp1;
    int j, rno, found = 0;
    fp = fopen("mystudents.txt", "r");
    fp1 = fopen("temp.txt", "w");
    printf("Enter roll number to update : ");
    scanf("%d", &rno);

    while (fread(&_student, sizeof(student), 1, fp))
    {
        if (_student.rno == rno)
        {
            _student.total = 0;
            _student.per = 0;
            found = 1;
            fflush(stdin);
            printf("Enter new name : ");
            scanf("%[^\n]s", _student.name);
            for (j = 0; j < 3; j++)
            {
                printf("Enter new marks of subject %d : ", j + 1);
                scanf("%d", &_student.sub[j].mark);
                _student.total += _student.sub[j].mark;
            }
            _student.per = _student.total / 3.0;
        }
        fwrite(&_student, sizeof(student), 1, fp1);
    }
    fclose(fp);
    fclose(fp1);
    if (found)
    {
        fp1 = fopen("temp.txt", "r");
        fp = fopen("mystudents.txt", "w");

        while (fread(&_student, sizeof(student), 1, fp1))
        {
            fwrite(&_student, sizeof(student), 1, fp);
        }
        fclose(fp);
        fclose(fp1);

    }
    else
    {
        printf("\nRecord not found\n");
    }

}

void delete_rec()
{
    student _student;
    FILE* fp, * fp1;
    int j, rno, found = 0;
    fp = fopen("mystudents.txt", "r");
    fp1 = fopen("temp.txt", "w");
    printf("Enter roll number to delete : ");
    scanf("%d", &rno);

    while (fread(&_student, sizeof(student), 1, fp))
    {
        if (_student.rno == rno)
        {
            found = 1;
       
        }
        else
        {
            fwrite(&_student, sizeof(student), 1, fp1);
        }
       
       
    }
    fclose(fp);
    fclose(fp1);
    if (found)
    {
        fp1 = fopen("temp.txt", "r");
        fp = fopen("mystudents.txt", "w");

        while (fread(&_student, sizeof(student), 1, fp1))
        {
            fwrite(&_student, sizeof(student), 1, fp);
        }
        fclose(fp);
        fclose(fp1);

    }
    else
    {
        printf("\nRecord not found\n");
    }

}

void sortTotalOnScreen()
{
    student *_student, _studentTemp;
    FILE *fp = fopen("mystudents.txt","r");
    fseek(fp,0,SEEK_END); //baştan sona kadar git
    int n = ftell(fp) / sizeof(student); // Eleman sayısını al
    _student=(student*)calloc(n,sizeof(student));


    rewind(fp); // imleci dosya başına al.
    for(int i=0;i<n;i++)
    fread(&_student[i],sizeof(student),1,fp);

    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(_student[i].total < _student[j].total)
            {
                _studentTemp = _student[i];
                _student[i] = _student[j];
                _student[j] = _studentTemp;

            }
        }
    }

    for(int i = 0; i < n;i++)
    {
        printf("\n%-5d%-20s",_student[i].rno,_student[i].name);
        for(int j = 0; j < 3;j++)
            printf("%4d",_student[i].sub[j].mark);

            printf("%5d%7.2f",_student[i].total,_student[i].per);

    }

    fclose(fp);

}
void sortTotalInFile()
{
    student *_student, _studentTemp;
    FILE *fp = fopen("mystudents.txt","r");
    fseek(fp,0,SEEK_END); //baştan sona kadar git
    int n = ftell(fp) / sizeof(student); // Eleman sayısını al
    _student=(student*)calloc(n,sizeof(student));


    rewind(fp); // imleci dosya başına al.
    for(int i=0;i<n;i++)
    fread(&_student[i],sizeof(student),1,fp);
    fclose(fp);

    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(_student[i].total < _student[j].total)
            {
                _studentTemp = _student[i];
                _student[i] = _student[j];
                _student[j] = _studentTemp;

            }
        }
    }
    fp=fopen("mystudents.txt","w");


    for(int i = 0; i < n;i++)
    {
        printf("\n%-5d%-20s",_student[i].rno,_student[i].name);
        for(int j = 0; j < 3;j++)
            printf("%4d",_student[i].sub[j].mark);

            printf("%5d%7.2f",_student[i].total,_student[i].per);
            fwrite(&_student,sizeof(student),1,fp);

    }

    fclose(fp);


}
void sortNameOnScreen()
{
    student *_student, _studentTemp;
    FILE *fp = fopen("mystudents.txt","r");
    fseek(fp,0,SEEK_END); //baştan sona kadar git
    int n = ftell(fp) / sizeof(student); // Eleman sayısını al
    _student=(student*)calloc(n,sizeof(student));


    rewind(fp); // imleci dosya başına al.
    for(int i=0;i<n;i++)
    fread(&_student[i],sizeof(student),1,fp);

    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(strcmp(_student[i].name < _student[j].name) > 0 )
            {
                _studentTemp = _student[i];
                _student[i] = _student[j];
                _student[j] = _studentTemp;

            }
        }
    }

    for(int i = 0; i < n;i++)
    {
        printf("\n%-5d%-20s",_student[i].rno,_student[i].name);
        for(int j = 0; j < 3;j++)
            printf("%4d",_student[i].sub[j].mark);

            printf("%5d%7.2f",_student[i].total,_student[i].per);

    }

    fclose(fp);

}


int main(int argc, char const* argv[])
{

    int ch;

    do
    {
        printf("\n1 Create");
        printf("\n2 Display");
        printf("\n3 Append");
        printf("\n4 Number of records");
        printf("\n5 Search");
        printf("\n6 Update");
        printf("\n7 Delete");
        printf("\n8 Sort total on screen");
        printf("\n9 Sort Total in File");
        printf("\n10 Sort name on screen");
        printf("\n0 Exit");

        printf("\nEnter your choice : ");
        scanf("%d", &ch);

        switch (ch)
        {
        case 1:
            create();
            break;
        case 2:
            display();
            break;
        case 3:
            append();
            break;
        case 4:
            numofrecord();
            break;
        case 5:
            search();
            break;
        case 6:
            update();
            break;
        case 7:
            delete_rec();
            break;
            case 8:
            sortTotalOnScreen();
            break;
            case 9:
            sortTotalInFile();
            break;
            case 10:
            sortNameOnScreen();
            break;
        case 0:
            exit(1);
            break;

        default:
            printf("Type a valid number :");
            break;
        }

    } while (ch != 0);



    return 0;
}
well define its a good code you share
 
Seçkin Üye
Katılım
25 Mar 2020
Mesajlar
425
Çözümler
3
Tepki puanı
70
Ödüller
7
Yaş
27
6 HİZMET YILI
for how long r u learning this language!
 
Seçkin Üye
Katılım
7 Ağu 2020
Mesajlar
599
Çözümler
14
Tepki puanı
86
Ödüller
2
5 HİZMET YILI
nice, basic stuff from c++ but really helpful
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst