我已经被这个问题困扰了好几天了。我正试图(逐行)将整数的文本文件直接扫描到链表中(最终目标是对它们进行排序)。通常情况下,我会这样做。。。
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...
但是,我不允许使用数组来解决这个问题。在这一点上,我不知道如何存储缓冲区。
我还在以正确的方式处理这个问题吗?有人能为我指出解决这个问题的正确方向吗?注意,我对链表和结构等概念还相当陌生。任何例子都将不胜感激。谢谢
然后使用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
}