我有以下struct
:
struct NODE {
char username[50];
char password[50];
char usertype[50];
struct NODE *next;
} *head=NULL;
我想从.csv
文件中读取database.csv
形式的username, password, usertype
,使用strtok
将每行标记为令牌并将每个令牌放在右侧领域。例如,我的文件如下所示:
johnnydepp, pirate123, user
tonystark, iron456, sysop
我一直在阅读C LinkedList
,但我无法理解。任何帮助都会非常感激,或者有关如何在C中实现LinkedList
的任何好的参考资料。
我的主要问题是将元素放在每个节点中。我知道如何使用strtok
来标记文件中的一行。这是我到目前为止所做的:
void createList() {
FILE *data;
data = fileopen("password.csv", "r");
char parsedLine[50];
while (fgets(parsedLine, 50, data) != NULL) {
char *ptr = strtok(parsedLine, ", ");
node *temp;
temp = (node*)malloc(sizeof(node));
// I am stuck here //
}
谢谢!
修改
这会有用吗?
extern void createList() {
FILE *data;
data = fileopen("password.csv", "r");
char parsedLine[50];
while (fgets(parsedLine, 50, data) != NULL) {
struct NODE *node = malloc(sizeof(struct NODE));
char *getUser = strtok(parsedLine, ", ");
strcpy(node->username, getUser);
char *getPass = strtok(NULL, ", ");
strcpy(node->password, getPass);
char *getType = strtok(NULL, ", ");
strcpy(node->usertype, getType);
node->next = head;
head = node;
}
fclose(data);
}
答案 0 :(得分:2)
实际上非常简单......你有一个NODE
结构,它包含一个next
指针,一个变量head
指向列表的头部(第一个节点) 。头指针以NULL
开头,表示列表为空。
要添加创建节点的节点,请将新创建的节点next
指针设置为指向列表的当前头部,并将头部设置为指向新节点:
/* Allocate new node */
struct NODE *node = malloc(sizeof(struct NODE));
/* Link to the current head */
node->next = head;
/* Make the new node the head of the list */
head = node;
执行此操作一次后,您将拥有一个包含一个节点的列表。完成两次后,你有一个双节点列表。等