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