首页 > 编程语言 > 详细

C语言结构体读写

时间:2020-12-07 09:35:54      阅读:40      评论:0      收藏:0      [点我收藏+]

实验环境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\n");
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\n");
30         scanf("%s",&nnode.myval);
31         printf("input char weight\n");
32         scanf("%d",&nnode.weight);
33         printf("Hello World!\n");
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\n",nn.weight,nn.myval);

    }

    fclose(fp);
    printf("Hello World! %d\n",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> 来关闭窗口...

 

C语言结构体读写

原文:https://www.cnblogs.com/saintdingspage/p/14095451.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!