Nie rozumiem tego fragmentu:
for (int i=0; i<200; i++){ // i<320 (kolumny)
for (int j=0; j<320; j++) // j<200 (wiersze)
Dlaczego komentarze przeczą temu co jest rzeczywiście w kodzie?
Po drugie jak powyższy kod wczytywania do tablicy ma się do:
for (int j=0; j<320; j++){ // i=0; i<320; i++ (bo najpierw kolumny)
for (int i=0; i<200; i++){ // j=0; j<200; j++ (do każdej kolumny sprawdzam wszystkie wiersze)
Moim zdaniem jeśli gubisz się w tym co jest w końcu kolumnami a co wierszami (czyli co jest osią X a co osią Y) to zrób to na vectorach. Tak jak radził @fasadin, będziesz miał wtedy wyraźnie zdefiniowane wiersze i kolumny. Wektor wektorów, czyli wektor kolumn, z których każda jest wektorem jasności pikseli.
To proste:
std::vector< std::vector< pixelBrightness_t > > pixelColumns;
// Wiec teraz moge odwolywac sie do kolumn, nie myslac czy to 320, 200 czy co innego:
pixelColumns[ 0 ]; // Pierwsza kolumna jasnosci pikseli
pixelColumns[ i ]; // i-ta kolumna jasnosci pixeli, nie wazne ile tych kolumn jest.
A ile tych kolumn jest? Tyle ile wykryjesz podczas wczytywania tablicy. Napotykasz nową kolumnę (czyli nowy znak po spacji w wierszu o numerze 0) i robisz:
std::vector< pixelBrightness_t > nextColumn;
// Tutaj wypełniasz nextColumn wszystkimi pikselami z danej kolumny
pixelColumns.push_back( nextColumn );
Spróbuj, warto korzystać z STL.