c语言将字符存入单链表,c语言将数据写入文件,提取数据建立链表

#include

#include

#include

typedef struct Node

{

int id;

char name[20];

struct Node *next;

}Node;

/*

*按节点向文件写入数据

*/

void write()

{

FILE *f = fopen("test.txt","w");//以“w”(写)方式打开test.txt

Node *temp = (Node *)malloc(sizeof(Node));

memset(temp,0,sizeof(Node));//初始化temp

int select,count;//写数据控制器

count = 0;//控制器,控制自动生成ID

printf("按\"1\"继续,\"0\"退出:\n");

scanf("%d",&select);

while(1==select)

{

temp->id = count;

printf("自动生成数据id:%d\n",count++);

printf("输入用户名:\n");

scanf("%s",temp->name);

fwrite(temp,sizeof(Node),1,f);

printf("按\"1\"继续,\"0\"退出:\n");

scanf("%d",&select);

}

fclose(f);//当前文件的写操作执行完毕,需要关闭该操作否则会影响对当前文件的其他操作

}

/*

*从文件中读取节点,并由此建立链表

*/

void read()

{

void display_list(Node *head);

FILE *f = fopen("test.txt","r");//以"r"(读)的形式读取文件,!*文件必须存在

Node *head = (Node *)malloc(sizeof(Node));//链表头节点

Node *p = head;//工作指针,建立链表

while(!feof(f))

{

Node *newNode = (Node *)malloc(sizeof(Node));//临时节点,从文件中读取节点

memset(newNode,0,sizeof(newNode));

fread(newNode,sizeof(Node),1,f);

if(feof(f))//读取结束跳出循环

{

p->next = NULL;

break;

}

p->next = newNode;

p=newNode;

p->next = NULL;

//printf("ID = %d\nNAME = %s\n\n",newNode->id,newNode->name);

}

display_list(head);

}

/*

*输出链表

*/

void display_list(Node *head)

{

Node *p = head;//工作指针

while(p->next)

{

p=p->next;

printf("ID = %d\nNAME = %s\n\n",p->id,p->name);

}

}

int main()

{

write();

read();

return 0;

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值