![](/img/trans.png)
[英]How do I create a program that will read infinite user input strings separated by commas in c?
[英]How do you create an outer loop to read two separate mazes using the user's input C program
因此,我们应该从用户读取输入文件。 输入文件包含以下内容:
问题是,我的程序只读取程序的前半部分。 当涉及下一个“迷宫”时,它停止。
如何一次性阅读两个迷宫? 请帮助。 这是输入文件:
2
16 15
0 1 1
1 5 1
5 6 1
6 7 1
7 11 1
11 10 1
10 14 1
14 13 1
13 9 1
14 15 1
1 2 1
2 3 1
0 4 1
4 8 1
8 12 1
16 15
0 1 1
1 2 1
2 6 1
6 7 1
7 11 1
11 15 1
15 14 1
14 13 1
13 9 1
9 5 1
9 10 1
2 3 1
0 4 1
4 8 1
8 12 1
这是我的程序:
fh = fopen("maze_test_small", "r");
chk_null_ptr(fh);
fscanf(fh, "%d",&nlines);
fscanf(fh, "%d %d", &nnodes, &nedges);
adjlist = (edgelist_t**) calloc(nnodes + 1, sizeof(edgelist_t *));
chk_null_ptr(adjlist);
for(i = 0; i < nnodes; i++)
{
adjlist[i] = (edgelist_t *) calloc(1, sizeof(edgelist_t));
chk_null_ptr(adjlist[i]);
adjlist[i][0].cost = 0;
}
while(nedges--)
{
fscanf(fh, "%d %d %d", &na, &nb, &wt);
adjlist[na] = (edgelist_t *) realloc(adjlist[na], (adjlist[na] [0].cost + 2) * sizeof(edgelist_t));
adjlist[nb] = (edgelist_t *) realloc(adjlist[nb], (adjlist[na][0].cost + 2) * sizeof(edgelist_t));
chk_null_ptr(adjlist[na]);
chk_null_ptr(adjlist[nb]);
adjlist[na][adjlist[na][0].cost + 1].dest = nb;
adjlist[nb][adjlist[nb][0].cost + 1].dest = na;
adjlist[na][adjlist[na][0].cost + 1].cost = wt;
adjlist[nb][adjlist[nb][0].cost + 1].cost = wt;
adjlist[na][0].cost++;
adjlist[nb][0].cost++;
}
您尚未将外部循环与nlines
。 这就是为什么它只读取一个迷宫。
您可以执行以下操作:
for(i = 0; i < nlines; i++){
// your code.
}
如果您在其他任何地方都不需要nlines
,
while(nlines--){
//your code
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.