У кого есть скрипт что проверяет пользовательский ввод и отсеевает все что не есть цифрами, даже виражения что состоят из цифр и букв, после чего просит ввести значение повторно?
SaintStellar, #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int main(int argc, char* argv[]) { int i; char* value = new char[1024]; for (;;) { cin >> value; if (sscanf(value, "%d", &i) == 1) { delete[] value; break; } } cout << "int: " << i << endl; return 0; } C #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int main(int argc, char* argv[]) { int i; char* value = new char[1024]; for (;;) { cin >> value; if (sscanf(value, "%d", &i) == 1) { delete[] value; break; } } cout << "int: " << i << endl; return 0; } Вывод: Test Wrap 150 int: 150 Code Test Wrap 150 int: 150
throwyourfears, спасибо, но есть несколько вопросов: 1. Зачем объявлять это #define _CRT_SECURE_NO_WARNINGS 2. Что означает параметр %d в sscanf
SaintStellar, Макрос отключает предупреждения о использовании небезопасных функций из CRT (C Run Time) Флаг для вывода целого числа, если грубо. Вот так и кресты учите, хуле
unnamed001, не скриптовый но писать можно #!/bin/bash msg_file=/dev/null #msg_file=/dev/stdout tmp_path=$HOME"/.cache/c++/" mkdir -p $tmp_path tmp_file=$1".c++" exe_file=$1".bin" if test $1 -nt $tmp_path$exe_file; then echo "Need to recompile.." > $msg_file tail -n +2 $1 > $tmp_path$tmp_file eval "g++ -o $tmp_path$exe_file $tmp_path$tmp_file > /dev/null 2>&1" if [ $? -eq 0 ] then echo "Compiled ok" > $msg_file else echo "Compile error" > $msg_file exit 255 fi fi eval "$tmp_path$exe_file $@1"