我正在尝试将特定格式的文本文件读入2d数组,但我不认为我做得对。这就是我到目前为止所做的:
int main()
{
int start;
int end;
int ch = 0;
int lines = 0;
int i;
int j;
FILE *fp;
fp = fopen ("file.txt", "r");
rewind(fp);
while(!feof(fp))
{
ch = fgetc(fp);
if (ch == '\n')
lines++;
}
int graph[lines][lines];
memset(graph, 0, sizeof lines);
//I don't think I'm doing the matrix populating correct. PLEASE HELP!
for (i = 0; i < lines; i++)
{
for (j = 0; j < lines; j++)
{
int node;
int edge;
fscanf(fp, "%d,%d", &graph[&node][&edge]);
}
}
}
while循环及其中的所有内容都会计算文本文件中有多少行,所以我将矩阵设置为文件中的行数。
这是我的文本文件
2,2 4,6
1,2 3,3 4,8 5,5
2,3 5,7
1,6 2,8 5,9
2,5 3,7 4,9
这是邻接列表,因此第一行表示具有边缘权重2的节点2,而具有边缘权重6的节点4与节点1(文本文件的第一行)相邻,依此类推。
我的问题是,我不知道如何将文本文件中的信息放入矩阵中。任何建议都会有所帮助!
答案 0 :(得分:0)
给你的一些建议:
似乎你正在学习C,这是你的任务,因此你将更好地解决这些问题。因为每项任务都有一些目的
在学习C中停止使用Turbo C / C ++,因为它是旧式的,目前不符合编码要求。
许多错误
倒带(fp) - 打开文件后不需要,但在文件末尾到达文件顶部时需要。因此,倒带(fp)将如下:
fp = fopen ("file.txt", "r");
while(!feof(fp)){
ch = fgetc(fp);
if (ch == '\n')
lines++;
}
rewind(fp);
现在读取值并填充2D数组,如下所示:
while (!feof(fp)) {
int node;
int edge;
char c;
int lineno=0;
fscanf(fp, "%d,%d%c", &node, &edge, &c);
graph[node][edge]=lineno;
if ( c == '\n' ){
lineno++;
}
}