![](/img/trans.png)
[英]How to read formatted lines from a text file and save info in a linked list? IN C
[英]Read from a file and input the formatted line to linked list. C
我正在尝试逐行读取文件,格式化的字符串并将其存储在链接列表中。
我的typedef:
typedef struct s_deck {
char name[16];
int atk;
int def;
int cost;
struct s_deck* next;
} card;
我正在从中读取文件的示例:
Line 1: Name 4 4 5
Line 2: Name2 5 5 5
我正在尝试实现此功能的功能...
card *LoadDeck() {
FILE* file = fopen("text", "r");
if(file == NULL) {
printf("unable to open file...\n");
}
char line[16];
card* start = NULL;
card* newest = NULL;
card* previous = NULL;
fgets(line, 15, file);
card* newCard = malloc(sizeof(card));
sscanf(line, "%s %d %d %d\n", newCard->name, &newCard->atk,
&newCard->def, &newCard->cost);
printf("Added:%s Attack:%d Defense:%d Cost:%d\n", newCard->name, newCard->atk,
newCard->def, newCard->cost);
if (start == NULL) {
start = LoadDeck(NULL);
newest = start;
}
else {
newest = LoadDeck(newest);
}
if (previous != NULL) {
previous->next = newCard;
}
fclose(file);
return newCard;
}
所以我遇到的问题是,这是一个无限循环,其中它仅读取第一行和第一行。 我所拥有的printf就是看它在做什么,以及……正确地阅读该行,但是它一直在做,并且永不停止。
我不知道它是否正确创建了链表。 我还没走那么远。 我认为我实施得很对,但是很难做到这点。 我试图在这里找到一些问题,但是他们正在读取的文件比我的要复杂得多,所以我认为应该有一个更简单的方法。
好吧,我知道也许我应该对此发表评论,但是对不起,我没有足够的声誉来做到这一点。 无论如何,我认为您的程序会无休止地循环,因为您的起始变量始终为NULL,在发现start == NULL为true后,对函数的首次调用将导致函数自行调用,后续调用将始终导致无限递归,因为start始终为NULL。 您写的这些行是黑洞 :
if (start == NULL) {
start = LoadDeck(NULL);
newest = start; }
它没有为启动变量分配任何内容,而只是导致无休止的递归。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.