What's wrong with my problem - Segmentation fault
Hello everyone, my program is not working and i dont know why! Appear this messenger to me "Segmentation fault". Help me please.
File "matriz.txt":
7 1 6 2 0 0 0 8 4
0 0 8 0 7 0 0 0 0
0 0 4 0 1 0 5 0 7
8 4 0 1 6 0 0 0 2
2 0 0 0 0 0 0 3 5
6 3 0 7 5 0 0 0 0
0 0 2 0 4 7 1 0 0
0 0 3 0 2 8 4 0 9
0 5 0 0 0 1 2 0 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include <cstdlib>
using namespace std;
void menu();
void lerJogo(char **matriz, char *arquivo, int &verifica);
void imprimeMatriz (char **matriz, int n);
int main ()
{
char **matriz;
int escolhaMenu;
char *arquivo;
int verifica = 0;
arquivo = new char (20);
matriz = new char *[10];
for (int l = 0; l <= 9; l++)
{
matriz[l] = new char[10];
}
menu();
cin >> escolhaMenu;
while(escolhaMenu != 1 && escolhaMenu != 2)
{
menu();
cin >> escolhaMenu;
}
cout << "Indique o arquivo texto contendo o jogo: ";
cin >> arquivo;
lerJogo (matriz, arquivo, verifica);
imprimeMatriz(matriz, 9);
return 0;
}
void menu()
{
cout << "--------------SUDOKU--------------" << endl;
cout << "Digite 1 para jogar e 2 para sair:" << endl;
}
void lerJogo(char **matriz, char *arquivo, int &verifica) // ler os dados de entrada da matriz no arquivo
{
cout << "Antes" << endl;
ifstream arqEntrada;
arqEntrada.open ("matriz.txt");
cout << "Depois" << endl;
char numero;
int l = 1
int c = 1; // linha, coluna
if (!arqEntrada)
{
cout << "Não foi possível encontrar o arquivo: " << arquivo << endl;
arqEntrada.close();
}
else
{
while(!arqEntrada.eof())
{
arqEntrada >> numero;
matriz[l][c] = numero;
c++;
if (c == 10)
{
c = 1; // volta para a coluna 1
l++; // começa a andar a linha
}
}
arqEntrada.clear();
arqEntrada.close();
}
}
void imprimeMatriz (char **matriz, int n)
{
for (int l = 1; l <= 9; l++)
{
for (int c = 1; c <= 9; c++)
{
cout << matriz[l][c] << " ";
}
cout << endl;
}
}
| |
You have a file full of numbers so why are all your variables characters?
Do you realize that array elements start at zero and stop at size - 1?
Have you considered using two for() loops for your data entry loop instead of the single while loop?
Have you run the program with your debugger? Your debugger should be able to tell you exactly where it detects the problem.
Topic archived. No new replies allowed.