- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
#define C_WRONG -2000
....
int tttt_atoi(char* p_string){
int result = C_WRONG;
if ( *p_string < '0' || *p_string > '9' )
return C_WRONG;
result = atoi(p_string);
return result;
}
double tttt_atof(char* p_string){
double result = C_WRONG;
result = atof(p_string);
if (result!=0){
return result;
}
else{
if(strcmp(p_string,"0.0")==0 || strcmp(p_string,"0")==0 || strcmp(p_string,"0.")==0){
return result;
}
else{
return C_WRONG;
}
}
}
и вы посмейтесь. или facepalm'нитесь. синтакс оригинала.
чисто случайно увидел это чудо итальянских технологий. нашел пару десятков мест где эти функции еще используется - на следующей неделе убью это нафиг.
Что интересно, аффтар понимал говнокодовость функций группы `ato...`, но, стремясь ее исправить, создал еще более говнокодовый код. Особенно умиляют проверки на ноль во второй функции. А почему ".0" не вошло?
А ведь надо-то было всего лишь обратить внимание на существование нормальных функций группы `strto...` и танцевать уже от них, вместо того, чтобы избивать мертвые функции группы `ato...`.
как справедливо заметил калиграфер, место ato* функций - это простые тривиальные программы где обрабатывать ошибки не обязательно.
«The atof() function is subsumed by strtod() but is retained because it is used extensively in existing code. If the number is not known to be in range, strtod() should be used because atof() is not required to perform any error checking.»
ЗЫ: давайте ссылки, надрочу вам кармы :-Р
ЗЫ. Да ладно:) Не ради кармы там, а токмо пользы для!
для большинства юзеров, там представленных, копипастить - естественный процесс :-D