Mercurial > sos > sos
diff src/std.c @ 2:b6182f00de82
The work I have so far
author | Jonathan Pevarnek <pevarnj@gmail.com> |
---|---|
date | Tue, 01 Mar 2011 02:39:27 -0500 |
parents | |
children | 0aa0ad9e1cc3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/std.c Tue Mar 01 02:39:27 2011 -0500 @@ -0,0 +1,72 @@ +void itoa(int n, char *a) +{ + if(n < 0) { + *a++ = '-'; + n *= -1; + } + char *b = a; + if(!n) *b++ = '0'; + for(; n; b++) { + *b = n%10 + '0'; + n = n/10; + } + *b-- = '\0'; + for(; a < b; a++, b--) { //reverse + char temp = *b; + *b = *a; + *a = temp; + } +} + +int atoi(char *a) +{ + int neg = 0; + int n = 0; + if(*a == '-') { + neg = 1; + a++; + } + while(*a >='0' && *a <= '9') + n = n*10 + (*a++ - '0'); + if(neg) n *= -1; + return n; +} + +void sPrint(char *a) +{ + char *b = a; + while(*b && *++b); + putline(a, b - a); +} + +void iPrint(int n) +{ + char string[10]; + itoa(n, string); + sPrint(string); +} + +int strcmp(char *a, char *b) +{ + while(1) { + if(*a - *b) return *a - *b; + if(*a == '\0') return 0; + a++; + b++; + } + return -1; +} + +void sGet(char *a, unsigned int n) //TODO bug Jeff about getline +{ + int length = getline(a, n); + a[(length < n)?length:n - 1] = '\0'; +} + +int arrayLookup(char *text, const char array[][10], int last) +{ + int i; + for(i = 0; i < last; i++) + if(!strcmp(array[i], text)) return i; + return last; +}