簡體   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