Вопрос простой, как мне сохранить матрицу из stdin в 2d-массив. Проблема заключается в том, что я не знаю, размер, а также я должен признать плохое входные данныеКак читать матрицу из stdin в c
Пример правильного ввода:
1 2 3
4 5 6
7 8 9
Пример неправильного ввода:
1 2 3
4 5 6 5
7 8 9
1 2 3 4
Сначала я пытаюсь прочитать значение одного размер массива до EOF с помощью scanf, а затем создать массив 1d array 2d. Это нормально ? Я не знаю, как scanf распознает новую строку.
сочетание [ 'fgets()'] (http://linux.die.net/man/3/fgets), ['strtok()'] (http://linux.die.net/man/3/strtok) и ['malloc()'/'calloc()'] (http://linux.die.net/man/3/malloc) решит вашу проблему. –
Вы не можете использовать 'scanf' для распознавания конца строки, он может распознавать пробелы (включая новые строки, вкладки и пробелы). Вместо этого вы можете использовать, например. 'fgets', чтобы получить строку, а затем разделить эту строку (используя, например,' strtok') в пространстве, чтобы получить отдельные значения в строке. –
Однако есть большая проблема, я думаю: если вы не знаете размеры матрицы, как бы вы знали, что первая строка верна? Или будет ли количество значений в первой строке указывать размеры? Будут ли размеры всегда равными NxN, или это может быть MxN? –