将文本文件读入链接列表而不将数组作为缓冲区?

时间:2015-11-30 14:15:48

标签: c linked-list

我几天来一直坚持这个问题。我正在尝试将(整行)整数的文本文件直接扫描到链表中(最终目标是对它们进行排序)。通常情况下,我会这样做...

struct list {
    int data;
    struct list *next;
};

int main()
{
    char buffer[100];
    struct list* node = NULL;
FILE *fp = fopen(filename,"r");
while (fgets(buffer, 100, fp)) {

    struct list* new_node = malloc(sizeof(struct list));
    new_node->next = NULL;

    new_node->data = atoi(buffer);
}
//and so on...

但是,我不允许使用数组来解决这个问题。我已经迷失了关于如何存储缓冲区的方法。

我还在以正确的方式接近这个吗?有人可能会指出我正确的方向来解决这个问题吗?注意我对链表和结构等的概念还是比较新的。任何例子都会非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

然后使用fscanf代替fgets -

struct list* new_node = malloc(sizeof(struct list));
new_node->next = NULL;
while (fscanf(fp,"%d",&new_node->data)==1) {    //this will directly store integer into linked list
     //handle your data
     //increment new_node to new_node->next in order to create a list 

}