从带有ASCII比较的文件中读取数字?

时间:2019-05-04 02:55:26

标签: c++ file io

当前,我正在尝试读取图形的数字。我使用向量数组,因为我知道我使用的顶点数量。因此,文本文件如下所示:

1 2 3 4
2 1
3 1
4 1

所以我的打印功能可以正常工作,我正在尝试像这样打印它:

Adjacency list of vertex 0
 head 

 Adjacency list of vertex 1
 head -> 2-> 3-> 4

 Adjacency list of vertex 2
 head -> 1

 Adjacency list of vertex 3
 head -> 1

 Adjacency list of vertex 4
 head -> 1

但它并不止于此。如果我在末尾添加printf("%d", number);,它将在出现段错误的任何问题之前停止(我知道它是C,但是我误用了它,并注意到它在做任何错误之前就已经停止了。

这是我的主要爱好:

int main()
{
    int V = 5;
    vector<int> adj[V];
    FILE *file = fopen("bfs1.txt", "r");
    if(file == 0){
      cout << "ERROR: file does not exist" << endl;
      return -1;
    }
    else {
      int x;
      fscanf(file, "%d", &x);
      int indexChange = 1;
      while(!feof(file)) {
        int c = getc(file);
        int number = c - '0';
        //to ignore spaces
        if (number == -16 ){
          continue;
        }
        //NewLine so increase vertex index
        if (number == -38){
          indexChange = indexChange + 1;
          continue;
        }
        //End of file
        if (number == -49){
          printGraph(adj,V);
          break;
        }
        addEdge(adj, indexChange, number);
        printGraph(adj,V);
        //printf("%d\n", number);
       }
     }
    return 0;
}

有了此更改,它对我有用,但我不知道它为什么起作用。

if (number == -38){
          indexChange = indexChange + 1;
          break;
        }

0 个答案:

没有答案