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++; } } fclose(fp); }