Каков стандартный способ анализа поплавков во время выполнения в C? - PullRequest
3 голосов
/ 12 апреля 2010

У меня есть научное приложение, для которого я хочу ввести начальные значения во время выполнения. У меня есть возможность получить их из командной строки или получить из входного файла. Любой из этих параметров вводится в универсальный анализатор, который использует strtod для возврата связанного списка начальных значений для каждого прогона моделирования. Я использую аргумент командной строки или getline () для чтения значений.

Вопрос в том, должен ли я запускать свой собственный анализатор или использовать генератор анализатора или какую-то библиотеку? Что такое стандартный метод? Это единственные данные, которые я буду читать во время выполнения, а все остальное устанавливается во время компиляции (за исключением выходных файлов и некоторых других совершенно простых вещей).

Спасибо

Joel

Ответы [ 3 ]

5 голосов
/ 12 апреля 2010

Также проверьте strtof () для чисел с плавающей запятой, strtod () для двойных.

3 голосов
/ 12 апреля 2010
sscanf

, вероятно, является стандартным способом их анализа.

Однако есть некоторые проблемы с sscanf, особенно если вы анализируете пользовательский ввод.

И, конечно же,

atof
0 голосов
/ 14 апреля 2010

Как правило, я предпочитаю, чтобы входные данные поступали из файла (например, начальные условия выполнения, общее количество временных шагов и т. Д.), А входные данные флага поступают из командной строки (например, имя входного файла, имя выходного файла и т. д.). Это позволяет архивировать и использовать файлы снова, и позволяет встраивать комментарии в файл, чтобы помочь объяснить входные данные.

Если входной файл имеет обычный формат:
Для синтаксического анализа прочитайте полную строку из файла и используйте sscanf для «разбора» строки на переменные.

Если входной файл имеет неправильный формат: Исправьте формат файла, чтобы он был регулярным (если это вариант). Если нет, то strtof и strtod - лучшие варианты.

...