Sort file structure member

/***
fwriteStruct.c
***/
#include<stdio.h>
#include<string.h>

struct student
{
    char name[10];
    int age;
};

int main()
{
    struct student st[5] = {0};
    int i;
    for(i = 0; i < 5; i++)
    {
        printf("please input name:");
        scanf("%s",st[i].name);
        printf("please input age:");
        scanf("%d",&st[i].age);
    }
    FILE *p = fopen("./c.txt","w");
    fwrite(st,sizeof(struct student),10,p);
    fclose(p);
    return 0;
}
/***
freadStruct.c
***/
#include<stdio.h>
struct student 
{
    char name[10];
    int age;
};

int main()
{
    struct student st[5] = {0};
    FILE *p = fopen("./c.txt","rb");
    int i;
    for(i = 0; i < 5; i++)
    {
        fread(&st[i],sizeof(struct student),1,p);
    }
    fclose(p);
    
    for(i = 0; i < 5; i++)
    {
        printf("name = %s,age = %d\n",st[i].name,st[i].age);
    }
    return 0;
}

operation result:

ubuntu1604@ubuntu:~/wangqinghe/C/20190728$ ./sort

name = wang,age = 23

name = qing,age = 56

name = he,age = 58

name = wa, age = 13

name = heq,age = 57

/***
freadWrite.c
***/
#include<stdio.h>
struct student 
{
    char name[10];
    int age;
};

int main()
{
    struct student st[5] = {0};
    FILE *p = fopen("./c.txt","rb");
    int i;
/*
    for(i = 0; i < 5; i++)
    {
        fread(&st[i],sizeof(struct student),1,p);
    }
*/
    fread(st,sizeof(struct student),5,p);
    fclose(p);
    
    for(i = 0; i < 5; i++)
    {
        printf("name = %s,age = %d\n",st[i].name,st[i].age);
    }
    return 0;
}

operation result:

ubuntu1604@ubuntu:~/wangqinghe/C/20190728$ ./sort

name = wang,age = 23

name = qing,age = 56

name = he,age = 58

name = wa, age = 13

name = heq,age = 57

 

/***
sort.c
***/
#include<stdio.h>
struct student 
{
    char name[10];
    int age;
};

void swap(struct student *a,struct student *b)
{
    struct student temp = *a;
    *a = *b;
    *b = temp;
}

void bubble(struct student *p,int n)
{
    int i;
    int j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n- i; j++)
        {
            if(p[j-1].age > p[j].age)
            {
                swap(&p[j-1],&p[j]);
            }
        }
    }
}

int main()
{
    struct student st[5] = {0};
    FILE *p = fopen("./c.txt","rb");
    int i;
/*
    for(i = 0; i < 5; i++)
    {
        fread(&st[i],sizeof(struct student),1,p);
    }
*/
    fread(st,sizeof(struct student),5,p);
    fclose(p);

    bubble(st,5);
    
    for(i = 0; i < 5; i++)
    {
        printf("name = %s,age = %d\n",st[i].name,st[i].age);
    }

    p = fopen("./d.txt","wb");
/*
    for(i = 0; i < 5; i++)
    {
        fwrite(&st[i],sizeof(struct student),1,p);
    }
*/
    fwrite(st,sizeof(struct student),5,p);
    return 0;
}    

 

Guess you like

Origin www.cnblogs.com/wanghao-boke/p/11260942.html