【问题标题】:Passing half of a text file to one node of a linked list and the second part to another using C使用 C 将文本文件的一半传递给链表的一个节点,将第二部分传递给另一个节点
【发布时间】:2015-09-11 18:38:06
【问题描述】:

出于测试目的,我以以下方式创建了一个仅包含两个节点的链表:

void implement (int size)
{
    for (int i = 0; i < size; i++)
    {
        node* new = malloc(sizeof(node));

        if (new == NULL)
        {
            printf("Out of memory!\n");
            return;
        }

        new->i = i;
        new->link = head;
        head = new; 
    }
}

现在大小为 2,节点属于以下类型:

typedef struct node
{
    int i; 
    char array[100];
    struct node* link;
}node; 

node* head = NULL;

我的目标来自以下文本文件:

A, B

使用以下代码将 A 传递给一个节点,然后将 B 传递给另一个节点:

char* data;
data = malloc(sizeof(char) * 100);


fgets(data, 30, inptr);

node* cur = head;
int n = 0; 

for (int i = 0, j = 6; i < j; i++)
{

   cur->array[n] = data[i];
   n++;
   printf("%s", cur->array); 

   if(data[i] == ',')
   {

        cur = cur->link;

   }


}

for (node* ptr = head; ptr != NULL; ptr = ptr->link)
{
    printf("%s\n", ptr->array); 
}

但是,对于第一个 printf 语句,我的输出如下:

AA,

然后对于遍历链表的第二个 printf 语句,什么都没有。我已经通过使用 gdb 的程序,它似乎工作正常,所以我看不出这里有什么问题。任何建议/提示将不胜感激。在此先感谢

【问题讨论】:

  • 我应该说,如果我将数据更改为:char data[100],然后我会为第二个 printf 语句获得“A”,即现在在第一个节点中观察到这一点。但是,尽管 gdb 建议将“B”传递给第二个节点,但第二个节点似乎仍为空白...
  • 你在 cur = cur->link; 之后缺少 n=0;
  • 老鹰的眼睛我的朋友......这就是门票。如果数据是动态分配的,你能解释一下为什么这不起作用吗?

标签: c linked-list


【解决方案1】:

你在 cur = cur->link 之后缺少 n=0;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多