Использование sscanf()
с элементом argv
- это один из способов извлечь float
из командной строки аргумент . Вам также следует проверить возвращаемое значение, чтобы увидеть, действительно ли float
было извлечено из строки и сохранено в вашей переменной.
Возможно, лучше использовать strtod()
, так как вы можете выполнить лучшую проверку с помощью второго аргумента. Вы можете использовать этот указатель, чтобы проверить, что последний символ, использованный в преобразовании, был последним символом в строке. то есть. Вы можете проверить, что "3.5abc"
содержит допустимое число с плавающей точкой, но вся строка не была единственным допустимым числом с плавающей точкой.
Если то, что вы подразумеваете под вводом командной строки , читает входные данные из stdin
, то это не имеет ничего общего с argv
, и вместо этого вам следует использовать scanf()
или fgets()
+ strtod()
.
Обратите внимание, что есть также функция atof
, которая по сути является версией strtod
, которая не дает вам дополнительной возможности проверки ошибок. Из справочных страниц это просто: strtod(nptr, (char **) NULL);
. C99 также предоставляет функцию strtof()
, которая возвращает float
вместо double
. Вы можете назначить double
для float
и преобразовать его неявно, поэтому не думайте, что использование strtod()
вызовет проблему.