чтение чисел из файла с сопоставлением ascii? - PullRequest
0 голосов
/ 04 мая 2019

В настоящее время я пытаюсь прочитать цифры для графика. Я использую массив векторов, потому что я знаю количество вершин, которые я использую. Итак, текстовый файл выглядит так:

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;
        }
...