c - 将 .csv 文件读入 C LinkedList

标签 c parsing data-structures linked-list nodes

我有以下结构:

struct NODE {
    char username[50];
    char password[50];
    char usertype[50];
    struct NODE *next;
} *head=NULL;

我想从.csv文件中读取,例如database.csv,其形式为用户名、密码、用户类型,并对每个文件进行标记使用 strtok 插入标记并将每个标记放入右侧字段中。例如,我的文件如下所示:

johnnydepp,pirate123,用户
tonystark,iron456,管理员

我一直在阅读 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指针指向列表的当前头,并将head设置为指向新节点:

/* 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 LinkedList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465264/

相关文章:

c - 该数组如何初始化为零?

c - 有没有办法获取在c中调用函数时使用的参数名称

c - 如何从标准输入打印行?

ruby - 如何使用 to_i 获取 Ruby 字符串中的第二个整数?

php - 需要建议来更改我的数据库设计

objective-c - 相当于 +[NSString stringWithContentsOfURL :usedEncoding:error:] for CFStringRef

c++ - 提升精神 : parse a section of an input

Javascript 从字符串中解析一个整数

c - ANSI C 中的树数据结构

创建用 C 中的链表实现的通用堆栈