#include<string.h>
#include<stdio.h>
struct Friend{
char name[50];
char surname[50];
char gender;
char date[50];
struct Friend * next;
};
struct Friend* initialize(char *);
int main(){
char name[100];
printf("ENter the name of the file\n")
gets(name);
struct Friend * head;
head=initialze(name);
}
struct Friend * initialize(char *name){
FILE * ffile;
ffile=fopen(name,"r");
if(ffile==NULL)
exit(1);
}
这是我在C中的函数初始化。我需要打开一个文件(文件看起来如下所示),并创建一个链接列表,其中包含每个人的NAME,SURNAME,GENDER和DATE OF BIRTH ,并返回链表的(HEAD指针)起始地址。我已经完成了任务,一次取一个字符,有3个嵌套的while循环。但是你可能已经猜到这是一个非常低效的解决方案。
文件的名称并不重要,因为我提示用来编写文件。但这里的文件是如何看待的
约翰;莱尼; M; 13/01/1978;
约什;布什; M; 15/05/1989;
安吉里卡;维; F; 20/10/1990;
所以当你看到我们在每个元素后面都有一个分号(;)
答案 0 :(得分:0)
我会接近这个有点不同。 您可以将整个文件读取到缓冲区或读取并在每次遇到“\ n”后存储 然后你必须有一个方法来创建一个具有所需结构的节点,并从你刚读过的当前行中填入数据。
例如:
void create(Friend* Head)
{
struct Friend *new_node = malloc(sizeof(Friend));
new_node->whatever = whatever;
Head->Next = new_node;
}