Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Misha v.3 19.02.2015 01:40 / 19.02.2015 01:46
pa_string.C:unsigned int pa_atoui(const char *str, int base, const String* problem_source){ unsigned int result = 0; const char *pos = str; <skipped> if (base == 16 && *pos == '0') { /* handle option prefix */ ++pos; if (*pos == 'x' || *pos == 'X') { ++pos; } } if (base == 0) { /* dynamic base */ base = 10; /* default is 10 */ if (*pos == '0') { ++pos; if (*pos == 'x' || *pos == 'X') ++pos; base=16; } }в str приходит "011"
if (*pos == 'x' || *pos == 'X') ++pos; base=16;судя по форматированию, должно быть так:
if (*pos == 'x' || *pos == 'X') { ++pos; base=16; }в коде из uClibc, крторый, судя по комментярию, был взят за основу, скобочки сейчас стоят правильно:
if (base == 0) { /* dynamic base */ base = 10; /* default is 10 */ if (*pos == '0') { ++pos; base -= 2; /* now base is 8 (or 16) */ #if _STRTO_ENDPTR fail_char = pos; #endif if ((*pos == 'x') || (*pos == 'X')) { base += 8; /* base is 16 */ ++pos; } } }но лучше подождать мнения moko@ :)