zoukankan      html  css  js  c++  java
  • C语言结构体读写

    实验环境fedora33 Qt5.12

    背景 哈夫曼编码 每个结点包含了字符和对应的权值等信息,最好记录在文件里,每次运行代码从文件里读取结点信息

    • 输入结点信息
     1 #include <stdio.h>
     2 
     3 typedef struct
     4 {
     5     int weight;
     6     char myval;
     7 }newnode;
     8 
     9 void inputinfo(int n);
    10 
    11 int main()
    12 {
    13     int n;
    14     printf("give me a number
    ");
    15     scanf("%d",&n);
    16     inputinfo(n);
    17     return 0;
    18 }
    19 
    20 
    21 void inputinfo(int n)
    22 {
    23     FILE* myfile;
    24     newnode mynode[3];
    25     newnode nnode;
    26     myfile = fopen("/home/saintding/文档/newplan.dat","a+");
    27     for(int i=0;i<n;i++)
    28     {
    29         printf("input char val
    ");
    30         scanf("%s",&nnode.myval);
    31         printf("input char weight
    ");
    32         scanf("%d",&nnode.weight);
    33         printf("Hello World!
    ");
    34         fwrite(&nnode,sizeof(newnode),1,myfile);
    35     }
    36     rewind(myfile);
    37     fclose(myfile);
    38 }
    • 读取结点信息
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/stat.h>
    typedef struct
    {
        int weight;
        char myval;
    }newnode;
    
    int main()
    {
        FILE* fp;
        newnode nn;
        struct stat buf;//用于获取文件信息的结构体
        stat("/home/saintding/文档/newplan.dat",&buf);
        int rows = buf.st_size/sizeof(newnode);
        //struct stat buf = (struct stat*)malloc(sizeof(struct stat));
        fp = fopen("/home/saintding/文档/newplan.dat","rb");
        for(int i=0;i<rows;i++)
        {
            fread(&nn,sizeof(newnode),1,fp);
            printf("weight:%d,myval:%c
    ",nn.weight,nn.myval);
    
        }
    
        fclose(fp);
        printf("Hello World! %d
    ",rows);
        return 0;
    }

    输出效果图:

    weight:7,myval:a
    weight:32,myval:b
    weight:18,myval:c
    weight:5,myval:d
    weight:25,myval:e
    weight:13,myval:f
    Hello World! 6
    按 <RETURN> 来关闭窗口...

  • 相关阅读:
    4. Android框架和工具之 android-async-http
    3. Android框架和工具之 xUtils(BitmapUtils)
    自定义多列排序:C++/Java实现
    Java套接字
    Java泛型
    线程同步之生产者消费者
    面向对象之深复制与浅复制
    谈谈多线程
    递归与尾递归
    单例模式:Instance
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/14095451.html
Copyright © 2011-2022 走看看