Кажется, что реализация LynxOS strtod
не обрабатывает все те же случаи, что и Linux, или, в этом отношении, Solaris. Проблема в том, что я пытаюсь разобрать текст, который может содержать десятичные или шестнадцатеричные числа.LynxOS strtod не то же самое, что Linux
В Linux я называю
a = strtod(pStr, (char **)NULL);
и я получить ожидаемые значения в a
для входных строк, таких как 1.234567
и 0x40
.
В LynxOS десятичные числа обрабатываются правильно, но шестнадцатеричный анализ просто равен 0 из-за остановки при достижении «х». Глядя на страницы руководства, кажется, что strtod LynxOS поддерживает только десятичные строки во входном файле.
Кто-нибудь знает об альтернативе, которая будет работать как на Lynx, так и на Linux?
Добро пожаловать в землю Unix. Если вы напишете (один из) стандарт (ы) POSIX, вы получите большую мобильность. Но это может означать игнорирование некоторых * очень * полезных расширений. – dmckee
@dmckee: Это не имеет никакого отношения к UNIX. Это связано с тем, что OP вызывает UB, вызывая функцию с неправильной подписью. Желаемое поведение даже не зависит от POSIX; это требуется ANSI/ISO C. –
@R .. Даже не смотрел на это. Просто ответил на требования системных зависимостей. – dmckee