c - 将多个条目存储到链表中
问题描述
我有一个由多个日记条目组成的文本文件,我可以阅读它并将其存储到一个名为 Journal 的结构中。但是我现在的问题是我不知道如何将它逐个添加到链表中。
这是我的插入方法
void insertStart (LinkedList *list, Journal *JEntry) {
Node *newNode;
newNode = (Node*)malloc(sizeof(Node));
newNode->data.day = JEntry->day;
newNode->data.month = JEntry->month;
newNode->data.year = JEntry->year;
strcpy(newNode->data.entry, JEntry->entry);
if (list == NULL) {
list->head = newNode;
}
else {
newNode->next = list->head;
list->head = newNode;
}
printf("Inserted Entry = %d/%d/%d :%s\n", newNode->data.day, newNode->data.month, newNode->data.year, newNode->data.entry);
}
这是
fscanf(fo, "%d", &numEntry);
journal = (Journal *)malloc(numEntry * sizeof(Journal));
for (i=0; i<numEntry;i++) {
fscanf(fo, "%d/%d/%d\n", &journal[i].day, &journal[i].month, &journal[i].year);
fgets(journal[i].entry, SIZE, fo);
}
insertStart(list, journal);
index = atoi(argv[1]);
printf("%d-%02d-%02d: %s\n", journal[index].year, journal[index].month, journal[index].day, journal[index].entry);
free(journal);
fclose(fo);
}
这是我的结构
#define SIZE 102
typedef struct {
int day;
int month;
int year;
char entry[SIZE];
} Journal;
typedef struct Node {
Journal data;
struct Node *next;
} Node;
typedef struct {
Node *head;
} LinkedList;
如果我将 insertStart 放在 for 循环中,是的,它输入了 4 次,但一遍又一遍的结果相同。
如果我把它放在上面显示的位置,它只会运行 1 次。
我现在的问题是如何将其余条目存储到链接列表中?谢谢你
这是文本文件的内容
4
12/04/2010
Interview went well I think, though was told to wear shoes.
18/04/2010
Doc advised me to concentrate on something... I forget.
03/05/2010
Was asked today if I was an art exhibit.
19/05/2010
Apparently mudcakes not made of mud, or angry wasps.
第一个数字4
是条目数,以防有人想知道。
解决方案
首先,您需要在创建时设置list->head
为NULL
(或使用calloc
代替malloc
)。
但是,您的问题来自线路insertStart(list,journal);
。虽然是指向对象journal
数组开头的指针,但不知道这一点。它取消引用指针并且只将第一个日记条目添加到列表中。Journal
insertStart
推荐阅读
- c# - 在没有 PublicClientApplicationBuilder 和 AcquireTokenInteractive 的情况下在 MSAL 中为 EWS 获取委托权限
- kiwi-tcms - 如何将组件关联到测试用例?
- javascript - 如何使 DOM 中的 ES6 模块导出功能可用?
- python - 将单个组中的 pandas 数据帧迭代地附加到 h5 文件
- swift - Xcode 错误不会让我点击注册或登录
- javascript - 在js中禁用一些id
- r - 问:如何应用多重 LASSO 回归?
- windows - 获取内置 Windows 用户帐户的本地化名称的最短方法是什么?
- c - 用户定义的一维数组的加法和平均函数
- python - 每次方法调用都会自动调用 __init__ 吗?