码迷,mamicode.com
首页 > 其他好文 > 详细

单链表的小例子(三)链表读取和保存

时间:2014-10-09 01:35:08      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   ar   for   div   c   log   r   

#include <stdio.h> 
#include <malloc.h> 
#include <string.h> 

struct address 
{ 
	int a; 
	int b; 
	char c; 
	struct address *next; 
}; 

void SaveToFile(struct address *p, FILE *fp) 
{ 
	if(p != NULL) 
	{ 
		do 
		{ 
			fwrite(p, sizeof(struct address), 1, fp); 
			p = p->next; 
		} while(p != NULL); 
	} 
} 

int load(FILE *fp, struct address **head)
{
	int n=0; 
	struct address *p1,*p2; 
	*head = (struct address *) malloc(sizeof(struct address)); 
	memset(*head, 0, sizeof(struct address)); 
	if( fread(*head, sizeof(struct address), 1, fp) != 1) 
	{ 
		free(*head); 
		*head = NULL; 
		return(0); 
	} 
	p2 = *head; 
	n++; 
	while( !feof(fp)) 
	{ 
		p1 = (struct address *) malloc(sizeof(struct address)); 
		fread(p1, sizeof(struct address), 1, fp); 
		p2->next = p1; 
		p2 = p1; 
		n++; 
	} 
	p2->next = NULL; 
	return(n); 
} 

void main() 
{ 
	struct address *head; 
	struct address *Test[10] = {0}; 
	int i = 0; 
	FILE *fp = NULL; 

	for(i=0; i < 10; i++) 
	{ 
		Test[i] = (struct address *)malloc(sizeof(struct address)); 
		if(Test[i] != NULL) 
		{ 
			memset(Test[i], 0, sizeof(struct address)); 
			Test[i]->a = 65 + i; 
			Test[i]->b = 65 + i; 
		} 

	} 
	for(i = 0; i < 10; i++) 
	{ 
		if(i < 10) 
		{ 
			Test[i]->next = Test[i+1];
		} 
	} 
	if((fp = fopen("addrbook.txt", "wb")) != NULL) 
	{ 
		SaveToFile(Test[0], fp); 
		fclose(fp); 
	} 
	if((fp = fopen("addrbook.txt", "rb")) != NULL) 
	{ 
		load(fp, &head); 
	} 
}

  

单链表的小例子(三)链表读取和保存

标签:blog   io   os   ar   for   div   c   log   r   

原文地址:http://www.cnblogs.com/xinglei/p/4012027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!