【发布时间】:2021-04-08 09:16:51
【问题描述】:
例如,我有如下两行数字
12,4,11,16,3,20,9,19,17,15
20,3,10,12,18,2,5,14,15,16
我想从 .txt 文件中逐行读取这些数字,每行应该是单独的单链表。我应该为每行创建 10 个不同的变量来存储这些数字吗?我试过了,但我不能以这种方式对这些数字进行任何操作。
这是正确的方法吗?
#include <stdio.h>
#include <stdlib.h>
struct list
{
int data;
struct list * next;
}list2;
struct list *head=NULL;
typedef struct list list;
void display();
int main() {
list * node1 = (list *)malloc(sizeof(list));
list * node2 = (list *)malloc(sizeof(list));
list * node3 = (list *)malloc(sizeof(list));
list * node4 = (list *)malloc(sizeof(list));
list * node5 = (list *)malloc(sizeof(list));
list * node6 = (list *)malloc(sizeof(list));
list * node7 = (list *)malloc(sizeof(list));
list * node8 = (list *)malloc(sizeof(list));
list * node9 = (list *)malloc(sizeof(list));
list * node10 = (list *)malloc(sizeof(list));
FILE *dosya = fopen("data.txt","r");
int filenum;
fscanf(dosya,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&node1->data,&node2->data,&node3->data,&node4->data,&node5->data,&node6->data,&node7->data,&node8->data,&node9->data,&node10->data);
return 0;
}
【问题讨论】:
-
让我回答您的问题“这是正确的方法吗?”还有另一个问题:您的程序有效吗? 如果无效,我认为您可以回答自己的问题。我建议你退后一步,将作业分成更小更简单的子作业,然后再进一步划分,直到不能再划分为止。然后处理并实现一个这样的小子任务,构建和测试它。只有当它起作用时,你才能继续下一个小任务。以此类推,直到您的全部任务都被实施并发挥作用。
-
你希望做什么
fscanf(dosya,"%d",&filenum);?在您的问题中,该文件似乎以逗号分隔的 10 个值的行开头。其中你想读取几行,所以你需要一个循环,并为每个数字分配一个单元格并为每一行制作相应的列表,如果你想保存所有和需要保存每行的第一个单元格和不要松动然后阅读下一行=>您的全局变量 head 不是解决方案,因为只能保存一行的列表。使用 10 个变量不是强制性的,事实上数组存在,这一切都取决于你使用的方式 -
@bruno 我的错误。这一行是关于 .txt 文件中的另一个问题。我想读取每一行并进行一些操作并打印。之后,我将开始读取下一行号。
-
如@Someprogrammerdude 建议的那样,如果您不能立即直接完成所有操作,您可以逐步进行,例如先忘记列表并读取每行的值并打印它们以进行检查。然后介绍列表等
标签: c list file-io linked-list readfile