Как отметили другие люди, данные обычно вводятся в виде строки - единственный вопрос - какая функция используется для чтения. Если вы используете графический интерфейс, функция может уже иметь дело с преобразованием в целое число и сообщением об ошибках и т. Д. Соответствующим образом. Если вы работаете со стандартом C, обычно проще прочитать значение в строку (возможно, с fgets()
, а затем преобразовать. Хотя atoi()
можно использовать, это редко лучший выбор; проблема в том, преобразование завершилось успешно (и дало ноль, потому что пользователь ввел допустимое представление ноль) или нет.
Как правило, используйте strtol()
или одного из его родственников (strtoul()
, strtoll()
, strtoull()
); для преобразования чисел с плавающей запятой используйте strtod()
или аналогичную функцию. Преимущество процедур целочисленного преобразования:
- необязательный базовый выбор (например, основание 10, или основание 10 - шестнадцатеричное, или основание 8 - восьмеричное, или любое из вышеперечисленного с использованием стандартных соглашений C (007 для восьмеричного, 0x07 для шестнадцатеричного, 7 для десятичного).
- необязательное обнаружение ошибок (зная, где остановилось преобразование).
Место, куда я обращаюсь за многими из этих спецификаций функций (когда я не смотрю на свою копию действующего стандарта C), - это веб-сайт POSIX (который включает функции C99). Он ориентирован на Unix, а не на Windows.