文字列パラメーターを 1 つ持ち、倍精度の数値を返す関数を C で作成したいと考えています。たとえば、文字列がfsldnf213414fasfa
返される場合は213414
. fasfasf123.412412fasfff
しかし、 asのような浮動小数点を返すこともできるはず123.412412
です。
私はすでに浮動小数点ではなく整数のみを抽出できる関数を持っています:
double get_num(const char* s)
{
unsigned int limit = UINT_MAX / 10;
double value = 0;
if ( !s ) {
return 0;
}
for ( ; *s; ++s ) {
if ( value < limit ) {
if ( isdigit(*s) ) {
value *= 10;
value += (*s - '0');
}
}
else {
return UINT_MAX;
}
}
return value;
}