为了测试目的,我通过以下方式创建了一个仅包含两个节点的链表:
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 完成了该程序,它似乎工作正常,所以我不太明白这里的问题是什么。任何建议/提示将不胜感激。提前致谢
最佳答案
在 cur = cur->link 之后缺少 n=0;
关于c - 使用 C 将文本文件的一半传递到链表的一个节点,将第二部分传递到另一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530096/