Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int myAtoi( char *s, int *error)
- {
- int result = 0;
- int sign = 1;
- int i = 0;
- int j = 0;
- int decimal = 0;
- int count = 0;
- double index = 0;
- for (j = 1; s[j] != '\0' ; j++){
- count = count + 1;
- }
- for (i = i; s[i] != '\0' ; i++){
- while (s[i] == ' ')
- {
- i++;
- }
- ///Converting Hex
- if (s[0] == '0' && s[1] == 'x'){
- index = count - i;
- if(s[i] > '0' && s[i] <= '9'){
- decimal = decimal + (s[i] - 48) * pow(16.0,(double)index);
- }
- else if((s[i] >= 'a' && s[i] <= 'f') ){
- decimal = decimal + (s[i] - 87) * pow(16.0,(double)index);
- }
- else if((s[i] > '9' && s[i] < 'a') || (s[i] >= 'g')){
- index = count - i + 1;
- decimal = (decimal/pow(16.0,(double)index));
- return decimal;
- }
- else{
- i++;
- }
- result = decimal;
- }
- ///Converting Decimal
- else {
- while (s[i] == ' ' || s[i] == '0'){
- i++;
- }
- if (s[i] == '-')
- {
- sign = -1;
- i++;
- }
- for (i = i; s[i] != '\0' ; i++){
- if(s[i] > ':' || s[i] < '/'){
- return result;}
- result = result*10 + s[i] - '0'; ///Minus '0' ascii 48 from answer to get back to decimal value
- result = sign*result;
- }
- }
- }
- return result;
- }
- int main()
- {
- char str[] = "0x10";
- int error = '0';
- printf("%d ", myAtoi(str, &error));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement