我几天来一直坚持这个问题。我正在尝试将(整行)整数的文本文件直接扫描到链表中(最终目标是对它们进行排序)。通常情况下,我会这样做...
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...
但是,我不允许使用数组来解决这个问题。我已经迷失了关于如何存储缓冲区的方法。
我还在以正确的方式接近这个吗?有人可能会指出我正确的方向来解决这个问题吗?注意我对链表和结构等的概念还是比较新的。任何例子都会非常感激。谢谢!
答案 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
}