2016-05-09 2 views
0

Я пытаюсь выполнить сканирование массива 2D-символов в моей программе на C++. Проблема в том, что мой код не сканирует весь массив, как ожидалось. Для ex, если я хочу, чтобы он сканировал массив 41 * 41, по какой-то причине он останавливается на 40-й строке, и когда я нажимаю кнопку ввода, он просматривает одну оставшуюся строку. Вот простой фрагмент кода.сканирование 2D-массива символов в C++

#include <iostream> 
char G[101][101]; 
int N,M; 
using namespace std; 
int main(int argc, const char * argv[]) { 
    cin >> M >> N; 
    cout << "m n scanned" << M << N << "\n"; 
for (int t =0;t<M;t++) { 
    for (int j = 0;j<N;j++) { 
     cin >> G[t][j]; 
     cout << "scanned " << t << " " << j << "\n"; 
    } 
} 
return 0; 
} 

компиляции: testProj $g++ main.cpp -o main

, что я здесь отсутствует?

Редактировать: вход < 2D массив символов из 41 * 41>

Ожидаемый результат: отсканированы 40 40

Фактический выход отсканированы 39 40
press enter

....

отсканирован 40 40

+0

Какие входные данные вы даете программе, и какие вы получаете, по сравнению с тем, что вы ожидаете? –

+0

@JoeF отредактировал вопрос со входами и выходами. – shshnk

+0

Вам нужно дать знак конца 'cin', например, пробел или ввести. – songyuanyao

ответ

-1

работают для меня.

входного файл, который получает конвейер исполняемого кода на стандартном вводе:

41 41 
***************************************** 
***************************************** 

[ 39 more rows of the same ] 

Выход:

m n scanned4141 
scanned 0 0 
scanned 0 1 
scanned 0 2 

... 

scanned 40 36 
scanned 40 37 
scanned 40 38 
scanned 40 39 
scanned 40 40 

Там нет ничего плохого с показанным кодом, когда используются как есть.

Я подозреваю, что вы забыли маленькую деталь, что operator>> на char значения собирается пропустить какие-либо пробелы, в дополнение к новой строки символов, и ваш входной матрицы содержит пробелы, которые игнорируются, а код продолжает искать 41 * 41 пробел для чтения. Итак, на данный момент ваш код ждет, чтобы прочитать ожидаемое количество непрочитанных не-пробельных данных.

+1

при downvoting, пожалуйста, подумайте над добавлением комментария? – BlueTrin

Смежные вопросы