C 创建链表并将信息存储在二进制文件中读取的实例代码

 更新时间:2013年03月24日 22:44:52   作者:  
C 创建链表并将信息存储在二进制文件中读取的实例代码,需要的朋友可以参考一下

复制代码 代码如下:

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

void getInfo(Node * node);
int printNodes(Node *node);
void saveToFile(Node * node, char * filename);
void readFromFile(char * filename, int n);

Node nodes[20];
int main() {
    Node *first = (Node *) malloc(sizeof(Node));
    first->data = 1;
    first->next = NULL;
    getInfo(first);
    int numbers = printNodes(first);
    saveToFile(first, "D:/123123");
    readFromFile("D:/123123", numbers);
    return 1;
}

void getInfo(Node * node) {
    Node *last = node;
    char ch = 0;
    while ((ch = getchar()) != 'x') {
        Node *newNode = (Node *) malloc(sizeof(Node));
        newNode->data = ch - 'a';
        newNode->next = NULL;
        last->next = newNode;
        last = newNode;
    }
}

int printNodes(Node * node) {
    int i = 1;
    Node *p = node;
    while (p != NULL ) {
        printf("%d,", p->data);
        p = p->next;
        i++;
    }
    return i;
}

void saveToFile(Node * node, char * filename) {
    Node *p = node;
    FILE *fp;
    if ((fp = fopen(filename, "wb")) == NULL ) {
        return;
    } else {
        while (p != NULL ) {
            fwrite(p, sizeof(Node), 1, fp);
            p = p->next;

        }
    }
    fclose(fp);
}

void readFromFile(char * filename, int n) {
    int i = 1;
    FILE *fp;
    if ((fp = fopen(filename, "rb")) == NULL ) {
        return;
    } else {
        while (i < n) {
            Node *newNode = (Node *) malloc(sizeof(Node));
            fread(newNode, sizeof(Node), 1, fp);
            printf("--%d,",newNode->data);
            i++;
        }
    }
}

相关文章

  • Win10下最新版CLion(2020.1.3)安装及环境配置教程详解

    Win10下最新版CLion(2020.1.3)安装及环境配置教程详解

    这篇文章主要介绍了Win10下最新版CLion(2020.1.3)安装及环境配置,CLion 是 JetBrains 推出的全新的 C/C++ 跨平台集成开发环境,本文给大家介绍的非常详细,需要的朋友可以参考下
    2020-08-08
  • C语言菜鸟基础教程之判断

    C语言菜鸟基础教程之判断

    C语言判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)
    2017-10-10
  • C++基础入门教程(二):数据、变量、宏等

    C++基础入门教程(二):数据、变量、宏等

    这篇文章主要介绍了C++基础入门教程(二):数据、变量、宏等,本文讲解了变量初始化、宏定义、三种进制数的表示、const初探、auto声明等内容,需要的朋友可以参考下
    2014-11-11
  • 详解C++基础——类继承中方法重载

    详解C++基础——类继承中方法重载

    这篇文章主要介绍了C++基础——类继承中方法重载,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 浅谈C语言的字节对齐 #pragma pack(n)2

    浅谈C语言的字节对齐 #pragma pack(n)2

    下面小编就为大家带来一篇浅谈C语言的字节对齐 #pragma pack(n)2。小编觉得挺不错的现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • C++生成和解析XML文件的讲解

    C++生成和解析XML文件的讲解

    今天小编就为大家分享一篇关于C++生成和解析XML文件的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • OpenCV图像分割中的分水岭算法原理与应用详解

    OpenCV图像分割中的分水岭算法原理与应用详解

    这篇文章主要为大家详细介绍了OpenCV图像分割中的分水岭算法原理与应用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C++实现约瑟夫环的循环单链表

    C++实现约瑟夫环的循环单链表

    这篇文章主要为大家详细介绍了C++实现约瑟夫环的循环单链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C++采用openfilename打开文件对话框用法实例

    C++采用openfilename打开文件对话框用法实例

    这篇文章主要介绍了C++采用openfilename打开文件对话框用法实例,是C++文件操作中非常实用的技巧,需要的朋友可以参考下
    2014-10-10
  • 简单介绍C语言中的umask()函数和truncate()函数

    简单介绍C语言中的umask()函数和truncate()函数

    这篇文章主要介绍了简单介绍C语言中的umask()函数和truncate()函数,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09

最新评论