2013-08-27 2 views
-1

Хочу сканировать 2-D матрицу для целых чисел строки мудрых т.е. одна строка за один раз в «C»сканирования матрицы одна строка за один раз

Например:
, если матрица:

1 2 3 
4 5 6 
7 8 9 

тогда должно быть только 3 раз Scanf быть использованы и первый вход время быть

1 2 3 

сразу и так далее для другого ряда ,

для персонажа мы можем использовать что-то вроде:

char mat[10][10]; 
scanf("%s[^\n]%*c", mat[i]); 

аналогично можно для целых чисел?

+0

почему вы не дать три элемента массива в 'зсапЕ ("% d% d% d", & коврик [I], и мат [+ 1], & mat [i + 2]) 'Конечно, вам нужно взять для доступа« вне границ ». –

+0

Только три раза 'scanf'? может быть, вы можете взять их как строку, а затем извлечь из них цифры – P0W

+3

@Uchia Itachi Я думаю, что вы забыли «&» до mat [i] – jambono

ответ

0

Если вы не знаете, число столбцов или строк, то вы можете сделать что-то вроде этого:

Прочитайте каждую строку по одному в строке. Затем разделите текущую строку на символ пробела (используя, например, strtok), и используйте, например, strtol, чтобы проанализировать строку в целое число.

Как этот псевдокод

while (fgets(line)) 
{ 
    number_string = strtok(line, " "); 
    while (number_string != NULL) 
    { 
     mat[i++][j++] = strtol(number_string, NULL, 10); 
     number_string = strtok(NULL, " "); 
    } 
} 
Смежные вопросы