繁体   English   中英

将.csv文件读入C LinkedList

[英]Reading .csv file into C LinkedList

我有以下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 ,但我无法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);

}

它实际上非常简单......你有一个NODE结构,它包含一个next指针, 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;

执行此操作一次后,您将拥有一个包含一个节点的列表。 完成两次后,你有一个双节点列表。 等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM