C语言实现的 itoa(int num, str *temp, int radix) 与 atoi(str *temp)
2012-05-07 17:26
399 查看
/* * file name : my_itoa.c * function : achieve itoa and atoi * date : 2012-5-3 * modify : 2012-5-7 * author : gaoxiang */ #include <stdio.h> #include <assert.h> #include <stdlib.h> int my_atoi(const char *str); int main (void) { int i = -10; char str[50]; my_itoa(i,str,2); printf("%s\n",str); // printf("%d",my_atoi("-87")); return EXIT_SUCCESS; } /*function: my_itoa()*/ int my_itoa(int num, char *str, int radix) /*可以用sprintf(str,"%x",100)*/ { int sign = 0; char *temp = str; int i = 0; int j = 0; if (num == 0) /*处理0*/ { *temp = '0'; *(temp+1) = '\0'; return 1; } (num < 0) ? (sign = -1) : (sign = 1); /*处理负数*/ (sign == -1) ? (num = -num) : (num = num); while(num > 0){ /*求余,算出每一位的值*/ *temp++ = "0123456789abcdef"[num%radix]; num /= radix; } *temp = '\0'; /*构成字符串*/ temp = str; /*重置指针*/ j = strlen(temp)-1; /*设置交换边界*/ if (sign == -1){ temp[++j] = '-'; /*增加负号标志*/ temp[j+1] = '\0'; while (i<j){ /*逆制并且写入符号*/ temp[i] = temp[i]^temp[j]; temp[j] = temp[i]^temp[j]; temp[i] = temp[i]^temp[j]; i++; j--; } }else{ while (i<j){ /*逆制并且写入符号*/ temp[i] = temp[i]^temp[j]; temp[j] = temp[i]^temp[j]; temp[i] = temp[i]^temp[j]; i++; j--; } } //"0123456789abcdef"[num%] } /*function: my_atoi()*/ int my_atoi(const char *str) { int num = 0; int sign = 0; assert(str != NULL); /*下断言*/ while(*str++ == ' '); /*初步实现跳过空格*/ str--; /*回退一个字符*/ (*(str) == '-') ? (sign = -1,str++) : (sign = 1); while (*str++ != '\0') num = (*(str-1)-'0') + (num*10); /*数值计算*/ (sign != -1) ? (num = num): (num = -num); return num; }
1.思路
itoa : 首先判断正负,然后判断是否为零,接着用给出的数求余,存储到给定指针里面,接着将该数除以进制数,最后根据正负对字符串进行逆序,如果为负,则把字符串的最后一个字符即‘\0’置为‘-’,然后把‘-’字符后面的那个字符置为‘\0’,紧接着利用移位操作,原地进行交换字符。这样就可以实现。
atoi :首先要判断字符串的可存在性,然后滤过空格等空字符,接着判断正负,最后利用num = num+ *str[i]-‘0’ 求得num的值。
相关文章推荐
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言实现atoi和itoa(字符串与数字之间的转化)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- 【转载】C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- c语言实现itoa和atoi
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言atoi()和itoa()函数的实现
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)