Дробное - то есть с точкой ?
Вариант : разрешим юзеру ОДИН раз ввести точку.
вместо
int x будет
float x , соответственно scanf(... %f ) а не %d ,
добавляем флажок
int flag_point = 1 и ещё один ELSE IF:
Код:
...
else if ( i!=0 && flag_point==1 && buffer[i-1]!='-' )
{
flag_point = 0;
buffer[i] = ch;
putch(ch);
i++;
}
else ...
И хорошо бы всё это из мэйна в функцию упаковать