C语言中如何将文件中的数据读取到链表中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中如何将文件中的数据读取到链表中相关的知识,希望对你有一定的参考价值。
现在可以实现保存到文件了,但是读取不知道怎么读取,读取的过程是txt文件里的每行数据放入一个链表结点,下一行放入另一个结点。
struct info
char num[10];
char name[20];
double score[N];
double sum;
double aver;
;
typedef struct student
struct info handle;
struct student *next;
STU,*LinkList;
我的保存函数是这样的
int SaveFile(const LinkList head)
LinkList p = head->next;
FILE *fp = NULL;
fp = fopen("student.txt","w+");
if(fp == NULL)
fclose(fp);
return ERROR;
fprintf(fp,"学号 姓名 语文 数学 外语 总分 平均分\n");
while(p)
fprintf(fp,"%s %6s %3.1f %3.1f %3.1f %3.1f
%3.1f\n",p->handle.num,p->handle.name,p->handle.score[0],p->handle.score[1],p->handle.score[2],
p->handle.sum,p->handle.aver);
p = p->next;
fclose(fp);
return OK;
void load(PNODE head)
STU stu;
FILE* fp=fopen("stu.txt","rb");
assert(fp!=NULL);
while(fread(&stu,sizeof(STU),1,fp))
add_node(head,&stu);
PNODE create_node()
PNODE pnode=(PNODE)malloc(sizeof(NODE));
assert(pnode!=NULL);
return pnode;
void init_node(PNODE pnode,PSTU pstu)
pnode->stu=*pstu;
pnode->next=NULL;
void insert_node(PNODE head,PNODE pnode)
pnode->next=head->next;
head->next=pnode;
void add_node(PNODE head,PSTU pstu)
PNODE pnode=create_node();
init_node(pnode,pstu);
insert_node(head,pnode);
参考技术B 怎么写进去的就怎么读出来,相同的格式,用fscanf把数据读出来,然后用这些数据重新生成链表就可以了追问
请问下怎么重新生成啊,我自己写了个可是读不进去数据,能帮我看下吗?
追答跟创建链表是一样的
贴代码我看下吧
太长了,不让贴,可以留个QQ吗,谢谢
追答你留下吧我加你
追问501984295
本回答被提问者采纳如何将字符串从文件复制到 C 中的链表?
【中文标题】如何将字符串从文件复制到 C 中的链表?【英文标题】:how can i copy string from file to a linked list in C? 【发布时间】:2022-01-21 15:51:05 【问题描述】:大家好,我不能将文本从文件复制到链表,整数没有问题。有我的代码。主要问题是将访问年份和城市名称复制到链接列表中,例如,我是编程新手,但我无法获得很多东西。指针对我来说似乎很难
#include <stdio.h>
#include <stdlib.h>
#define K 50
typedef struct tourists
int year;
char city[K];
char country[K];
struct tourists *next;
Element;
typedef Element *List;
List from_file_to_list(char file_name[20])
FILE *file1;
int x, y;
char city_name[K];
List temp, head = NULL;
file1 = fopen(file_name, "r");
if(file1 == NULL)
printf("Cannot do that");
return NULL;
while(fscanf(file1, "%d %s", &x, city_name) != EOF)
temp = (List)malloc(sizeof(Element));
temp->city[K] = city_name;
temp->year = x;
temp->next = head;
head = temp;
return head;
void show_list(List head)
List temp;
temp = head;
while(temp != NULL)
printf("%s", temp->city);
temp = temp->next;
int main()
List head = NULL;
head = from_file_to_list("from.txt");`
show_list(head);
【问题讨论】:
strcpy(temp->city,city_name); 【参考方案1】:这一行:
temp->city[K] = city_name;
实际上并不复制字符串。要在 C 中复制字符串,您必须在循环中复制其中的每个字符,或者使用 strcpy()
或 strncpy()
之类的函数。
请记住确保字符串不超过您在目的地的可用空间量。
PS - 如果你有compiled your program with warnings turned on,你的编译器就会有told you 那一行有问题:
source>: In function 'from_file_to_list':
<source>:29:23: warning: assignment to 'char' from 'char *' makes
integer from pointer without a cast [-Wint-conversion]
29 | temp->city[K] = city_name;
|
【讨论】:
@newsenpai: 1. 下次编译时请打开警告。 2.如果有效,请采纳这个答案...以上是关于C语言中如何将文件中的数据读取到链表中的主要内容,如果未能解决你的问题,请参考以下文章