0

私は次のものを持っています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いますが、理解できません。LinkedListCでaを実装する方法についての助け、または良い参考文献をいただければ幸いです。

私の主な問題は、各ノードに要素を配置することです。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);

}
4

1 に答える 1

2

それは実際には非常に単純です...ポインターNODEを含む構造体と、リストの先頭 (最初のノード) を指す変数があります。ヘッド ポインターは、リストが空であることを意味します。nextheadNULL

ノードを追加するには、ノードを作成し、新しく作成されたノード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;

これを 1 回実行すると、1 つのノードを含むリストが作成されます。2 回実行すると、2 つのノードのリストが作成されます。等。

于 2012-11-20T01:40:07.583 に答える