Как вводить цифры с консоли - PullRequest
1 голос
/ 28 мая 2011

Я хочу прочитать некоторые цифры из консоли.Числа будут отображаться следующим образом -

5 1 2 3 4 5
4 5 6 7 8
6 2 3 4 5 6 7
..............
EOF

Начальный номер показывает, сколько чисел появится в этой строке, т. Е. Первое число в первой строке равно 5, поэтому на 5 будет больше чисел.эта линия.Конец ввода будет обозначаться EOF (конец файла).

Я думал о том, чтобы прочитать всю строку как строку, а затем преобразовать их в числа, но я хочу знать, есть ли другой способсделать это.

Ответы [ 2 ]

3 голосов
/ 28 мая 2011

Стандартный ответ: scanf(). Проблема со стандартным ответом состоит в том, что он не позволит вам проверить, есть ли в строке правильное число. Итак, ваша идея прочитать строку и затем преобразовать ее по частям гораздо лучше для обнаружения ошибок.

Взгляните на Как использовать sscanf () в циклах ; ответ показывает вам основы того, что вы должны делать. Это не точный дубликат. Вы прочтете первое значение, определяющее, сколько записей в строке, затем код, чтобы прочитать столько записей в массиве, с соответствующей диагностикой, если данные не соответствуют заявленному для него формату.

Если вы отвечаете за формат данных, вам следует рассмотреть возможность удаления поля подсчета - пусть компьютер подсчитает, сколько значений находится в строке. Компьютеры хороши в подсчете, и это устраняет источник ошибок, которые должны быть обнаружены и обработаны (таким образом, это облегчает программирование). (Если вы измените формат ввода, ваш вопрос станет дубликатом связанного вопроса.)

2 голосов
/ 28 мая 2011

Ознакомьтесь с документацией scanf:

int count, current, i;
while(scanf("%d", &count) > 0)
{
   for(i = 0; i < count; i++)
   {
       scanf("%d", &current);
       // store current
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...