12-06-2004, 05:13 PM | #1 (permalink) |
Upright
|
[C++] Multidimensional array problem
I'm using fstream in Visual C++ to read a maze from a text file into a multidimensional array and output it to another text file. I keep running into a problem somewhere along the line because the output is missing lines of the maze and gives me a bunch of weird characters.
This is my code for reading in and outputting: void read(int &x, int &y, char path[100][100]) { string filein, fileout; int l; cout << "Enter filename: "; cin >> filein; l=0; while(filein[l] != '.') { fileout += filein[l]; l++; } fileout += "_path.txt"; mazein.open(filein.c_str()); mazeout.open(fileout.c_str()); mazein >> x >> y; for(int a = 0; a <= y; a++) { for(int b = 0; b < x; b++) { mazein.get(path[b][a]); } mazein.get(); } } void print(int x, int y, char path[100][100]) { for(int a = 0; a <= y; a++) { for(int b = 0; b < x+1; b++) { if(path[b][a] == 'X') { path[b][a] = ' '; } mazeout << path[b][a]; } } } Any thoughts? Last edited by Rambo; 12-06-2004 at 05:24 PM.. |
12-06-2004, 06:22 PM | #2 (permalink) |
Tilted
|
Just off the top of my head, I would guess that you're not reading the input file correctly, and end up reading CR/LF characters. You start by using the stream extraction operator >> to read x and y (which I assume is the dimension of the array). Couldn't you do the same thing to read the maze data. If part of the data consists of spaces, it may be a little trickier, but probably possible if you take a look at the ifstream docs. I suspect you are not getting past the end of lines (which are actually two bytes on windows). Also check for unnecessary whitespace.
Also when you combine for styles it becomes hard to read please stick to one style or the other. I prefer this one, and I'm sure it's the more common: Code:
for (int i = 0; i < x; i++) Code:
for (int i = 0; i <= x+1; i++) Look at your loops, there is inconsistency in the number of times you are looping, and I think only the 2nd loop is correct (loops x times). Code:
for(int a = 0; a <= y; a++) { // loops y+1 times for(int b = 0; b < x; b++) { // loops x times ... for(int a = 0; a <= y; a++) { // loops y+1 times for(int b = 0; b < x+1; b++) { // loops x+1 times Last edited by a-j; 12-06-2004 at 08:04 PM.. |
Tags |
array, multidimensional, problem |
|
|