I am reading in a file into an array. It is reading each char, the problem arises in that it also reads a newline in the text file.
This is a sudoku board, here is my code for reading in the char:
bool loadBoard(Square board[BOARD_SIZE][BOARD_SIZE])
{
ifstream ins;
if(openFile(ins)){
char c;
while(!ins.eof()){
for (int index1 = 0; index1 < BOARD_SIZE; index1++)
for (int index2 = 0; index2 < BOARD_SIZE; index2++){
c=ins.get();
if(isdigit(c)){
board[index1][index2].number=(int)(c-'0');
board[index1][index2].permanent=true;
}
}
}
return true;
}
return false;
}
like i said, it reads the file, displays on screen, just not in correct order when it encounters the \n
You can put you ins.get() in a do while loop:
do {
c=ins.get();
} while(c=='\n');
Well in your file format you can simply not save newlines, or you can add a ins.get() the for loop.
You could also wrap your c=ins.get() in a function something like getNextChar() which will skip over any newlines.
I think you want something like this:
for (int index1 = 0; index1 < BOARD_SIZE; index1++)
{
for (int index2 = 0; index2 < BOARD_SIZE; index2++){
//I will leave the implementation of getNextDigit() to you
//You would return 0 from that function if you have an end of file
//You would skip over any whitespace and non digit char.
c=getNextDigit();
if(c == 0)
return false;
board[index1][index2].number=(int)(c-'0');
board[index1][index2].permanent=true;
}
}
return true;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With