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++;
        }
    }
}

(0)

相关推荐

  • c语言读取obj文件转换数据的小例子

    复制代码 代码如下: // hello.cpp : Defines the entry point for the console application.// #include "stdafx.h"#include "stdio.h" int _tmain(int argc, _TCHAR* argv[]){    FILE *file1,*file2;    file1=fopen("047facesmall.obj","r&quo

  • 在C#中创建和读取XML文件的实现方法

    1.创建简单的XML文件为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml; namespace CreateXml{    class Program    {        static void Main(string[]

  • C# 创建文本文件写入读取实现代码

    第一次运行时: 第二次运行时: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace 文件操作 { class Program { static void Main(string[] args) { //创建一个文本文件,最好先判断一下 StreamWriter sw; if (!File.Exists(

  • C# 读取指定路径配置文件的方法

    复制代码 代码如下: ExeConfigurationFileMap map = new ExeConfigurationFileMap();            map.ExeConfigFilename = @"F:\App1.config"; ;            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 

  • c#读取文件详谈

    c#里面封装了几乎所有我们可以想到的和我们没有想到的类,流是读取文件的一般手段,那么你真的会用它读取文件中的数据了么?真的能读完全么? 通常我们读取一个文件使用如下的步骤: 1.声明并使用File的OpenRead实例化一个文件流对象,就像下面这样 复制代码 代码如下: FileStream fs = File.OpenRead(filename); 或者 复制代码 代码如下: FileStream fs = FileStream(filename, FileMode.Open, FileAcc

  • C# Linq读取XML文件的实例

    1.示例XML文件:Demo.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?><note>  <conf>    <to>infozero</to>    <from>lerroy</from>    <heading>测试信息</heading>    <body>第一条测试信息<

  • c# 以二进制读取文本文件

    复制代码 代码如下: using System; using System.IO; public class FileApp {     public static void Main()     {         // 在当前目录创建一个文件myfile.txt,对该文件具有读写权限         FileStream fsMyfile = new FileStream("myfile.txt" , FileMode.Create, FileAccess.ReadWrite);

  • 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 * filena

  • C语言创建链表错误之通过指针参数申请动态内存实例分析

    本文实例讲述了C语言创建链表中经典错误的通过指针参数申请动态内存,分享给大家供大家参考之用.具体实例如下: #include <stdio.h> #include <stdlib.h>// 用malloc要包含这个头文件 typedef struct node { int data; struct node* next;// 这个地方注意结构体变量的定义规则 } Node; void createLinklist(Node* pHder, int length) { int i =

  • java 数据结构之删除链表中的元素实例代码

    java 删除链表中的元素 以下实例演示了使用 Clear() 方法来删除链表中的元素: import java.util.*; public class Main { public static void main(String[] args) { LinkedList<String> lList = new LinkedList<String>(); lList.add("1"); lList.add("8"); lList.add(&q

  • 用C和JAVA分别创建链表的实例

    创建链表.往链表中插入数据.删除数据等操作,以单链表为例.1.使用C语言创建一个链表: 复制代码 代码如下: typedef struct nd{ int data; struct nd* next; } node;//初始化得到一个链表头节点node* init(void){ node* head=(node*)malloc(sizeof(node)); if(head==NULL) return NULL; head->next=NULL; return head;}//在链表尾部插入数据v

  • Python 实现链表实例代码

    Python 实现链表实例代码 前言 算法和数据结构是一个亘古不变的话题,作为一个程序员,掌握常用的数据结构实现是非常非常的有必要的. 实现清单 实现链表,本质上和语言是无关的.但是灵活度却和实现它的语言密切相关.今天用Python来实现一下,包含如下操作: ['addNode(self, data)'] ['append(self, value)'] ['prepend(self, value)'] ['insert(self, index, value)'] ['delNode(self,

  • 数据结构 双向链表的创建和读取详解及实例代码

    数据结构 双向链表的创建和读取 双向链表是为了满足更加方便的查找前驱,而付出空间的代价的一个数据结构.双向链表的节点定义如下: typedef struct node { int x; struct node *prior,*next; }DLNode; 双向链表的空间结构如下图所示: 双向链表的创建如下: //创建双向链表 DLNode *create_DList() { DLNode *p,*h,*l; int n,i,x; h = (DLNode *)malloc(sizeof(DLNod

  • 怎么在C++二进制文件中注入git信息详解

    在后端生产环境中,为了方便定位问题,我们需要根据一个binary文件获取其对应的git信息,包括编译出该binary所用的代码分支.commitid.时间戳.commit message等.但是随着代码版本的升级,这些git信息也会随之变化.有没有办法在每次编译binary的时候,将git信息动态注入到其中呢? 答案是有! 创建以下几个文件 创建头文件version.hh,内容如下,其中声明了表示git信息的数据结构 #pragma once #include <string> namespa

  • EasyUI创建人员树的实例代码

    最近做了一个树状的下拉列表,在这里记录一下,以后可以直接使用 项目中的树状下拉列表是用来选择人员用的,具体实现展示如下: 先说一说功能,左边的人员数是提供选人的,当点击中间的按钮,选中的人员会直接移到右边,如果要删除已选中的人员,只需要双击右边人的姓名即可,点击确定进行集体的业务逻辑操作,一般就是新增人员到某一个表中. 我们再来看看这个DIV的具体代码,由于项目中在多个地方都使用到了这个人员树,所以我把这个DIV抽象出来当作一个公共的jsp页面.如需调用,只需要include这个jsp即可 us

  • Java实现单链表翻转实例代码

    Java实现单链表反转,递归和非递归两种形式 /** * 反转单链表 */ /** * 定义链表 * * @author 16026 * */ class Node { int val; Node next; public Node(int val) { this.val = val; } } public class ReverseList { /** * 反转链表 * * @param head * @return */ public static Node reverseList(Node

  • java 实现单链表逆转详解及实例代码

    java 实现单链表逆转详解 实例代码: class Node { Node next; String name; public Node(String name) { this.name = name; } /** * 打印结点 */ public void show() { Node temp = this; do { System.out.print(temp + "->"); temp = temp.next; }while(temp != null); System.o

随机推荐