Мой код запрашивает 10-значное число, он читает его в виде строки, передает его другой функции, которая проверяет, является ли ввод пользователя действительным числом и не содержит символов или символов с ASCII, а затем, если это хорошо, сatof
изменяет строку в число для переменной.
Я хочу, чтобы пользователь вводил только 10 цифр / символов на консоли ввода, я имею в виду, если пользователь, например, введет 11 символов,консоль просто не захватывает его, или в случае, если это невозможно для C, сделайте так, чтобы, если пользователь вводил более 12 символов на входе, то программа запускает сообщение об ошибке, говорящее, что оно превышает предел, проблема в том,когда я пытался использовать этот метод, например, если я поставил несколько больших чисел, например, 40-значное число, то программа сходила с ума и отправляла просто непонятные результаты, такие как «1. # J», или если я помещал символ в серединечисла, затем он отправляет соответствующее сообщение об ошибке, которое я установил для пользователя, чтобы не вводить символы, но он все еще захватывает часть числа аи примите это, так как в этом нет ничего плохого, вот код main
, который я пробовал:
int main() {
char chain[10];
float N;
int valid=0;
do{
printf("introduce real numbers: ");
fgets(chain, sizeof(chain), stdin);
if( chain[strlen(chain)-1] == '\n')
chain[strlen(chain)-1] = '\0';
valid=validate_numbers(chain);
}while(valid==0);
N=atof(chain);
printf("float number is: %.2f", N);
getche();
return 0;
}
Вот остаток кода для более полной проверки: Pastebin
И извините, если есть какие-то ошибки новичка или вопрос прост - я довольно новое программирование.