Звучит как домашнее задание.
Поправьте меня, если я ошибаюсь, и я дам вам больше, чем подсказки.
Вы можете объявить массив действительно большого размера, который вряд ли будетзаполненный пользовательским вводом, затем используйте scanf или что-то в этом роде для захвата целых чисел до тех пор, пока вы не нажмете '\ n', или вы не можете захватить каждое целое число за раз, выделяя память по мере использования, используя комбинацию вызовов malloc и memcpy.Первый вариант никогда не следует делать в реальных задачах, и я, конечно, не защищаю такие методы, даже если ваш учебник, вероятно, говорит вам, чтобы вы делали это таким образом.
В K & R есть такой же пример.
Это типичная проблема, с которой вы столкнетесь в C. Решение обычно - один из двух вариантов.
Используйте действительно большой массив, достаточно большой для хранениявход.Иногда это плохой вариант, когда данные могут быть очень большими.Пример того, когда это будет плохой идеей, - это когда вы сохраняете видеокадр или большой текстовый файл в массив.Это также открывает вам возможность атаки переполнения буфера в более старых версиях Windows.Однако иногда это хорошее решение для быстрого взлома небольших программ (домашнее задание), где вы можете рассчитывать на пользователя (т.е. вашего профессора, который не пытается взломать вашу программу), чтобы он не вводил 1000 символов.Обычно это считается плохой практикой, пожалуйста, рассмотрите мой второй вариант из соображений безопасности, о которых я упоминал ранее.
Используйте динамические массивы (например, malloc).Это, вероятно, то, что ваш профессор хочет, чтобы вы делали, поскольку это звучит как типичная проблема, когда студент впервые изучает указатели и массивы.Это отличный подход, просто не забудьте позвонить на память, когда вы закончите.Сложность в том, что вам все еще нужно знать размер массива, который вы хотите заблаговременно (хотя, конечно, не во время компиляции).