c-在链表节点中插入2个值



我正在处理一个链表,它的结构如下:

struct theStruct{
    int variable1;
    char* variable2;
    struct theStruct* next;
};

正如您所看到的,我想在每个节点中插入两个变量。我遇到的问题是,我目前正在从一个文本文件中读取,变量1在行的开头,变量2在行的末尾,所以我无法同时放入它们(至少我不知道)。我就是这样写的,但没有成功。

...
reading file
....
 while(token != NULL)
    {
        if(counter == 1)
        {
            newToken = token;
        }
        if(counter == 3)
        {
            temp = (theStruct*)malloc(sizeof(theStruct));
            temp->variable1= atoi(token);
            temp->variable2 = newToken;
            temp->next = head;
            head = temp;
        }
...

之后,当我尝试打印时,我只从temp->variable1中得到值,而temp->variable 2包含一些奇怪的字符。我想以某种方式保存第一个变量,直到我得到另一个变量,而不为temp分配新的内存,但我不知道如何做到这一点。我希望我给了你们足够的信息,给我一些线索或线索来解决我的问题。

当你说:

temp->variable2 = newToken;

您将temp->variable2指向第一次传递给strtok()的内容中间的某个位置——这很可能是将被覆盖的内容。你可能想复制它:

temp->variable2 = strdup(newToken);

这也是一些人认为strtok()充满危险的原因之一。

我假设您对文件中的多行执行此操作。按照以下思路考虑一个程序::

if open file fails die a horrible death
init linked list
while fgets from file a whole line != NULL {
    temp = malloc(sizeof(things));
    token = strtok(line, "!");
    while (token != NULL) {
        decide where to insert token in temp->XXXX
        token = strtok(NULL, "!");
    }
    insert temp into your linked list (probably)
}

相关内容

  • 没有找到相关文章

最新更新