我有以下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);

}

最佳答案

这实际上非常简单...您有一个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;


完成一次之后,您将获得一个包含一个节点的列表。完成两次后,您将获得一个两节点列表。等等。

关于c - 将.csv文件读入C链表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13465264/

10-09 06:08
查看更多