文件结构体成员排序

复制代码
/***
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;
}
复制代码

运行结果:

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;
}
复制代码

运行结果:

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;
}    
复制代码

 

posted @   王清河  阅读(370)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2018-07-28 1040 Longest Symmetric String (25)
2018-07-28 1068 Find More Coins (30)
点击右上角即可分享
微信分享提示