繁体   English   中英

将特定格式的文本文件读取到c中的2d数组/矩阵中

[英]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 ++,因为它已经过时并且目前不满足编码要求。

许多错误

  1. rewind(fp)-在打开文件后不需要,但是在到达文件末尾到达文件顶部时才需要。 因此,rewind(fp)将如下所示:

     fp = fopen ("file.txt", "r"); while(!feof(fp)){ ch = fgetc(fp); if (ch == '\\n') lines++; } rewind(fp); 
  2. 现在读取值并填充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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM