Browse Source

str2float and str2int added.

Jan Janak 22 years ago
parent
commit
b642053051
1 changed files with 52 additions and 0 deletions
  1. 52 0
      ut.h

+ 52 - 0
ut.h

@@ -28,6 +28,7 @@
  *
  * History
  * ------
+ * 2003-03-30 str2int and str2float added (janakj)
  * 2003-02-28 scratchpad compatibility abandoned (jiri)
  * 2003-02-13 strlower added (janakj)
  * 2003-01-29 pathmax added (jiri)
@@ -372,4 +373,55 @@ static inline void strlower(str* _s)
 }
 
 
+/*
+ * Convert a str into integer
+ */
+static inline int str2int(str* _s, unsigned int* _r)
+{
+	int i;
+	
+	*_r = 0;
+	for(i = 0; i < _s->len; i++) {
+		if ((_s->s[i] >= '0') && (_s->s[i] <= '9')) {
+			*_r *= 10;
+			*_r += _s->s[i] - '0';
+		} else {
+			return -1;
+		}
+	}
+	
+	return 0;
+}
+
+
+/*
+ * Convert a str to float
+ */
+static inline int str2float(str* _s, float* _r)
+{
+	int i, dot = 0;
+	float order = 0.1;
+
+	*_r = 0;
+	for(i = 0; i < _s->len; i++) {
+		if (_s->s[i] == '.') {
+			if (dot) return -1;
+			dot = 1;
+			continue;
+		}
+		if ((_s->s[i] >= '0') && (_s->s[i] <= '9')) {
+			if (dot) {
+				*_r += (_s->s[i] - '0') * order;
+				order /= 10;
+			} else {
+				*_r *= 10;
+				*_r += _s->s[i] - '0';
+			}
+		} else {
+			return -2;
+		}
+	}
+	return 0;
+}
+
 #endif