[英]Reading a specifically formatted text file into a 2d array/matrix in c
我正在尝试将特定格式的文本文件读取为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(文本文件的第一行)相邻,依此类推。
我的问题是,我不知道如何将文本文件中的信息放入矩阵中。 任何建议都会有所帮助!
给您一些建议:
似乎您正在学习C,这是您的作业,因此最好自己解决。 因为每项作业都有一定的目的
停止在学习C中使用Turbo C / C ++,因为它已经过时并且目前不满足编码要求。
许多错误
rewind(fp)-在打开文件后不需要,但是在到达文件末尾到达文件顶部时才需要。 因此,rewind(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++; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.