Если я могу предложить более безопасный подход:
Объявить буфер, достаточно большой для хранения строки:
char user_input[255];
Получить вход пользователя в безопасный способ:
fgets(user_input, 255, stdin);
Безопасный способ получения ввода, первый аргумент - указатель на буфер, в котором будет сохранен вход, второй - максимальный вход функция должна читать, а третья - указатель на стандартный вход, т. е. откуда поступает пользовательский вход.
Безопасность, в частности, вытекает из второго аргумента, ограничивающего количество чтений, которое предотвращает переполнение буфера. Кроме того, fgets
заботится о нулевом завершении обрабатываемой строки.
Подробнее о этой функции здесь .
EDIT: Если вам нужно сделать любое форматирование (например, преобразование строки в число), вы можете использовать atoi после ввода.
Можно использовать Инструментарий Архива Perl для обеспечения минимального ядра жемчуга + необходимые модули + программа Perl с Вами.
И можно даже преобразовать его с помощью Упаковщик ПАРИТЕТА к EXE-файлу окон, который будет работать точно так же, как любая другая программа с точки зрения конечного пользователя.
Можно получить исполняемые файлы Windows на всех трех языках.
Используя ПАРИТЕТ, Perl Aachiver был уже упомянут в других ответах и является отличным решением. Существует короткое учебное руководство на исполняемые файлы здания с помощью ПАРИТЕТА , который был опубликован как Подсказка по Perl в прошлом году.
В большинстве случаев, если Вы имеете ПАРИТЕТ:: Упаковщик уже установленный в Вашей системе сборки, можно создать автономный исполняемый файл без внешних зависимостей или требований с:
pp -o example.exe example.pl
В большинстве случаев ПАРИТЕТ сделает всю тяжелую работу определения Ваших зависимостей от модуля для Вас, но если это получает что-то не так, которое существуют дополнительные параметры командной строки, которые можно использовать, чтобы гарантировать, что они включены. Посмотрите эти документация стр для получения дополнительной информации.
Всего самого лучшего,
Paul
Вы уверены, что существует головная боль? ActivePerl и земляника Perl очень легки установить в Windows просто несколькими щелчками мышью. Python столь же легко установить, от какого я слышу.
Вы попытались установить какого-либо из тех, чтобы видеть, насколько легкий это? Если те трудны для Вашего клиента, я не вижу, как, давая им сценарий для выполнения будет легче.
Или, возможно, можно использовать что-то как изображение Докера для Perl или обеспечить его как веб-сервис вместо приложения.
Вы могли преобразовать сценарий в исполняемый файл. В Python и Windows можно легко сделать это с py2exe. Существуют аналогичные решения для Perl и Ruby, но я полагаю, что py2exe и свободен и надежен.
Нетехническая аудитория? Вы также захотите своего рода интерфейс рядового пользователя, вероятно, 'графического' типа. Вы могли бы попробовать wxPython, который может быть упакован в исполняемый файл Windows с py2exe и в приложение Mac с py2app.
Обувь может сделать exe's, и двоичные файлы для других платформ также, и Вы получаете интегрированный GUI.
"установка Perl в Windows не стоила бы того для них" Действительно? Это - тот комплекс?
Python имеет простой.MSI, который аккуратно устанавливает себя без беспорядка или суеты.
программа простого приложения А является всего несколькими .py файлами, таким образом, я не вижу большого фактора боли там.
Вы знаете своих клиентов лучше всего.
я нахожу, что следующее не так плохо. И намного легче поддерживать, так как Ваши обновления просто будут единственным.MSI с простым, легким-к-живому с источником.
1) двойной щелчок этот.MSI файл для установки Python (или Perl или безотносительно)
2) двойной щелчок этот другой.MSI для установки хорошего материала
В Ruby есть программа OCRA, которая упаковывает все в красивый аккуратный файл .EXE. Программа RubyScript2EXE больше не поддерживается, поэтому это будет лучшим решением.